Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Select - Solo lectura

Estas en el tema de Select - Solo lectura en el foro de Javascript en Foros del Web. Hola!! He estado buscando una respuesta a ésta pregunta , pero no he encontrado. Así que la vuelvo a formular. ¿Se puede hacer un "select" ...
  #1 (permalink)  
Antiguo 07/05/2012, 10:21
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 3
Select - Solo lectura

Hola!!
He estado buscando una respuesta a ésta pregunta, pero no he encontrado. Así que la vuelvo a formular.

¿Se puede hacer un "select" que sea de solo lectura?
Desabilitarlo no me sirve ya que necesito recoger los datos del mismo.

He intentado poner el select como readonly, pero de todas formas, me deja ver los valores que hay. He intentado poner un onkeypress="return false;" pero tampoco funciona. Sabeis alguna manera para no poder tocar el desplegable?

Saludos.
  #2 (permalink)  
Antiguo 07/05/2012, 10:29
Avatar de Dafonz  
Fecha de Ingreso: octubre-2009
Mensajes: 127
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Select - Solo lectura

Porque no lo deshabilitas e igualas el valor a un campo hidden, así a la hora de agarrar el valor agarras el del hidden y tienes tu select de "solo lectura"..
  #3 (permalink)  
Antiguo 07/05/2012, 10:34
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Select - Solo lectura

si, ya lo había pensado. Pero tengo como 6-7 campos select. Y sería ensuciar el código poniendo campos hidden, no?
  #4 (permalink)  
Antiguo 07/05/2012, 10:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Select - Solo lectura

Hola:

Cita:
Iniciado por luna690 Ver Mensaje
si, ya lo había pensado. Pero tengo como 6-7 campos select. Y sería ensuciar el código poniendo campos hidden, no?
La otra opción sería "ensuciar" la semántica de un control cuyo sentido semántico es "seleccionar", y si no se puede seleccionar nada... se trata también de un juego sucio...

El evento que tendrías que usar es change (cambio), pero no creo que sea lo debido... tal vez, si lo que quieres es mostrar las otras posibles opciones, usar radios y deshabilitar los que no se puedan elegir... o un input readonly (creo que semanticamente es lo apropiado)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 07/05/2012, 10:59
Avatar de luna690  
Fecha de Ingreso: marzo-2012
Ubicación: Barcelona
Mensajes: 61
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Select - Solo lectura

Al final he "ensuciado" el código. Necesito selects para poder seleccionar (en el caso que el formulario sea para crear un nuevo "técnico".
Pero el select debe estar deseleccionado para que en el caso de modificar/visualizar el técnico no se pueda tocar. O en el caso que una persona no "usuaria" no pueda modificar ningún dato, solo visualizar (sin poder ver todas las otras opciones del select).

Código HTML:
<input type="hidden" readonly="readonly" name="hdd_paisos" id="hdd_paisos" value="<?php echo $inc_pais; ?>" />

 <td><?php echo $Generic_pais; ?></td> 
                <td>
                	<select name="cbo_paisos" onchange="document.formulari.hdd_paisos.value=this.value"
					<?php if($consulta==1){ ?> disabled="disabled" style="background-color:#CCC; color:#666;" <?php } ?> id="cbo_paisos" >
                    <?php while ($row = mysql_fetch_array($array_paisos)){ ?>
                        <option value="<?php echo $row['id']; ?>" 
                        <?php if ($inc_pais == $row['id']){ ?> selected="selected" <?php } ?> >
                        <?php echo htmlentities($row['nombre']); ?>
                        </option>
                    <?php } ?>
                    </select>
                </td> 
Gracias por vuestra colaboración :)
  #6 (permalink)  
Antiguo 07/05/2012, 13:23
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Select - Solo lectura

No sé si aún te haga falta, pero quizá esto te sirva

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Remover options</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. /* script */
  10. function removerIndices(opcion,indices,combo,actual){
  11.  var cActual = document.getElementById(actual).value;
  12.   // console.log('Valor actual: ', cActual);
  13.  if((cActual != "") && (cActual == opcion )){
  14.  var elSel = document.getElementById(combo);
  15.  elSel.disabled = false;
  16.  var borrar = indices.split('|');
  17.  // console.log('borrar: ', borrar[0]);
  18.  var i;
  19.  var e=0;
  20. for (e=0; e<=borrar.length;e++){
  21.  
  22.  for (i = elSel.length - 1; i>=0; i--) {
  23. // console.log('El indice: ',elSel.options[i].value);
  24.    if (elSel.options[i].value == borrar[e]) {
  25.      elSel.remove(i);
  26.    }
  27.  }
  28.  
  29. }
  30.  
  31. }
  32. }
  33. //]]>
  34. </head>
  35. <form action="#">
  36. <select id="select1" onchange="removerIndices('A','3|1|2','select2',this.id);">
  37. <option value="" selected="selected">seleccione letra</option>
  38. <option value="A">A</option>
  39. <option value="B">B</option>
  40. <option value="C">C</option>
  41. <br />
  42. <select id="select2"  disabled="disabled" >
  43. <option value="" selected="selected">seleccione número</option>
  44. <option value="1">1</option>
  45. <option value="2">2</option>
  46. <option value="3">3</option>
  47. <br />
  48. </form>
  49. </body>
  50. </html>

Esta función basicamente hace lo siguiente, de acuerdo a las opción seleccionada en un select, elimina opciones de otro select

Los parámetros que pasa son
removerIndices(opcion,indices,combo,actual)
dónde
opción = El valor del select actual que cumple la condición
indices = son los indices del select en que se borrarán dichos indices, si son mas de uno se separan por |
combo = es el id del combo en que se borraran los indices
actual = es el id del combo que hace el onchange

En el ejemplo, al hacer onchange en el combo 1, si la opción seleccionada es A, se eliminan del combo 2 los option de los indices 1,2, y 3.
El tema del disabled/enabled es opcional y cualquier combo puede actuar sobre otro independientemente. No son exactamente selects dependientes en la forma tradicional. Faltaría agregar, si fuese necesario alguna modificación para que las opciones válidas del combo 1 que eliminan opciones del combo 2 sean más de una.
Y se podría incluso agregar opciones en lugar de eliminarlas

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: funcion, lectura, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.