Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/05/2012, 13:23
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 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.