¿Cómo validar un combo dependiente?

Tengo dos combos dependientes: uno es materia (id_materia) y el otro es correlativa (n_corr).

Cuando yo seleccione la materia correlativa, no me debe permitir elegir la misma opción que elegí en materia...

Respuesta
1

Si no te he entendido mal tienes dos combos con los mismos datos pero el segundo se habilita cuando se ha seleccionado algo en el primero y no debe permitir seleccionar el mismo valor, ¿es así?

Siendo así se me ocurre la siguiente solución vía jquery:

Tenemos dos combos, uno con id materia y otro con id correlativa con sus respectivos valores:

<select id="materia">
    <option>selecciona algo</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>
<select id="correlativa" disabled>
    <option value="-">selecciona algo del primer combo</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>

El segundo como ves está disabled.

Para conseguir lo que quieres basta con capturar el evento change del primer combo, quitarle el disabled al segundo y ocultar la opción seleccionada en el primero:

$("#materia").change(function(){
    ' Mostramos todos los valores del segundo combo para limpiar la elección anterior '
    $.each($("#correlativa option"), function(i,option){
        $(option).show();
    });
    ' Habilitamos el segundo combo '
    $("#correlativa ").attr("disabled",false)
    ' Seleccionamos el valor por defecto '
    $("#correlativa ").val("-");
    ' Ocultamos del segundo combo el valor seleccionado en el primero '
    $("#correlativa option[value=" + this.value + "]").hide();
});

Te dejo también un ejemplo funcionando en jsfiddle:

http://jsfiddle.net/vfportero/2o47gbjr/1/ 

hola! no me funciona... la idea es esa! pero será q no me da porq trabajo cn php y base de datos? o sea, las opciones se cargan solas...

No, no tienes porque afectar que el combo se cargue por php de base de datos.

Fíjate si los id's son correctos o si te da algún error de javascript (pulsando F12 para abrir la consola de desarrollador en tu navegador).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas