Saludos,
aquí tengo este código al que le hice varias adaptaciones hasta que finalmente me funciona exactamente como yo quiero... PERO.... SOLO FUNCIONA EN INTERNET EXPLORER... está claro que el motivo de que no funcione en Mozilla (por ejemplo) es el uso de
comboBox.add(new Option...., pero la solución no es utilizar [I]options para que sea compatible con IE, pues me da entonces errores inexplicables.
El script genera 4 combobox con las opciones disponibles, cada vez que se selecciona una en cualquier combobox ésta se excluye de los otros 3.
El script original fue sacado de este foro (no recuerdo bien si fue posteado por tunait) pero tuve que hacerle modificaciones pues el original ya tiene opciones predeterminadas en cada combobox (yo los necesito vacios inicialmente) además de que tampoco funciona en Mozilla.
Aquí va el código (incluí también el HTML para que solo tengan que copiar+pegar)
Código:
<html>
<head>
<title>ComboBox mutuamente excluyentes</title>
<script language="JavaScript1.2">
var numCombos = 4;
var _nombres = "Proyectos";
var proyectos = new Array("Pro1", "Pro2", "Pro3", "Pro4", "Pro5", "Pro6", "Pro7");
function initializeCombos(){
for(var j = 0; j < document.frm.elements.length; j++){
if(document.frm.elements[j].type == "select-one"){
document.frm.elements[j].options[0] = new Option("Selecciona...", "empty");
for(var m = 1; m <= proyectos.length; m++){
document.frm.elements[j].options[m] = new Option(proyectos[m-1], proyectos[m-1]);
}
}
}
updateOptions();
}
function updateOptions(){
for (var n = 0; n < numCombos; n++) {
var comboBox = eval('document.frm.'+_nombres + n); // tomar el combo
selectedValue = comboBox.value; // guardar su opcion actualmente seleccionada
comboBox.options.length = 0; // vaciar su lista opciones
comboBox.options[0] = new Option("Selecciona...", "empty");
for (var m = 1; m <= proyectos.length; m++) { // recorrer toda la lista de opciones posibles
unselected=true;
for (o=0; o<numCombos; o++) { // para cada combo visible
if (n!=o) { // que no sea el que estoy tratando
var otherComboBox = eval('document.frm.'+_nombres + o); // tomar el combo
// determinar si la opcion esta seleccionada
if (document.frm.hiddenCombo.options[m].value==otherComboBox.value)
unselected = false;
}
}
if (unselected) { // añadirle todas menos las que esten seleccionadas
comboBox.add(new Option(document.frm.hiddenCombo.options[m].text,document.frm.hiddenCombo.options[m].value));
}
}
comboBox.value = selectedValue;
}
}
</script>
</head>
<body>
<form name="frm">
<select name="hiddenCombo" style="display:none">
<script language="JavaScript1.2">
document.write('<option value="empty">Selecciona...</option>');
for (var n = 0; n < proyectos.length; n++) {
document.write('<option value="'+proyectos[n]+'">'+proyectos[n]+'</option>');
}
</script>
</select>
<script language="JavaScript1.2">
for (var i=0; i < numCombos; i++) {
document.write("<select name='"+_nombres+i+"' onChange='updateOptions(this);'>");
document.write("</select><br><br>");
}
initializeCombos();
</script>
</form>
</body>
</html>
Si alguién me ayuda con el script se lo agradeceré inmensamente...
Saludos y gracias de antemano,
Silver