Cita:
Iniciado por Alexis88 Podrías hacerlo así:
Código Javascript
:
Ver originalvar valor, texto, idx, equiv;
$("[name^=foo]").on("change", function(){
valor = this.value; //El valor seleccionado
idx = this.selectedIndex; //El número de opción seleccionada
texto = this.options[idx].innerHTML; //El texto de la opción seleccionada
equiv = $("[name^=foo]").index(this); //El número de lista en la que se produjo el cambio
$("[name^=bar]")
.eq(equiv) //Busco a la lista equivalente
.find("option") //Tomo a sus opciones
.eq(idx) //Tomo a la opción equivalente
.val(valor) //Le asigno el valor
.text(texto) //Le asigno el texto
.prop("selected", true); //La dejo seleccionada
});
Ahora, la explicación. Tenemos dos grupos de arrays de listas de tres listas cada una (pueden ser más o menos). En el código JS, declaro tres variables que usaré más adelante (las declaro al inicio para no tener que hacerlo en cada ocasión en la que seleccione una opción). Luego, cuando elija un valor de cualquiera de las listas cuyo nombre empiece por 'foo', ejecuto una función. En dicha función, tomo al valor seleccionado, al número de opción seleccionada (si son tres y selecciono a la segunda, el valor será 1, recordando siempre que se empieza a contar desde 0), el texto de la opción seleccionada y el número de lista con la que estamos trabajando actualmente (el mismo caso que el de las opciones). Luego, del conjunto de listas cuyo nombre empiece por 'bar', tomo a la equivalente con la lista actual, busco a sus opciones, tomo a la opción equivalente con la opción seleccionada en la primera lista y le asigno el valor y texto de la misma, además, la selecciono, quedan visible.
DEMO
Podrías hacerlo en más o menos pasos, pero decidí mostrarlo de esta manera para que se pueda entender con facilidad. Si tienes dudas, pregunta.
Saludos
Muchas gracias Alexis, la solución es genial y esta súper clara.
Ahora, la única pregunta que me queda es como hago para que funcione cuando mediante jquery se pueden agregar nuevas filas (en tu ejemplo, nuevos selects) de forma dinámica.
Es decir, cuando el usuario ve la pantalla, solo encuentra una fila (con el select que de cambiar puede generar cambios), pero puede ir agregando otras mediante un botón. El problema es que la función no funciona con estas nuevas filas adheridas dinamicamente por mas que tenga el mismo identificador.
Muchas gracias.