entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

obtener valores seleccionados de varias listas desplegables con jquery

Hola, tengo una funcion con ajax que genera una lista desplegable identica cada vez que se clica a un boton. al final acabo teniendo varias listas desplegables y cuando el usuario le de al boton de enviar, quiero recoger los valores seleccionados en esas listas. todas las listas tienen el mismo id y el mismo name. Mi pregunta es si existe una manera de recoger los valores seleccionados de varias listas desplegables con jquery.
He intentado varias cosas y nada...A ver si alguien aquí me puede ayudar, gracias

0voto

white comentado

Hola @midnightnymph, Podrias guardar todos los valores en un vector cada vez que se llame al evento click

var datos = [];

$('a').on('click', function(){
    data.push('algun valor...');
});

para entender mejor tu problema, podrias agregar el codigo que tienes hasta el momento?

0voto

dairon comentado

Estoy de acuerdo con @white lo mejor para endenter tu problema y ayudarte es que muestres tu código de js y de html para entender la estructura y la idea. tal vez la idea de varias listas con el mismo nombre e id no sea lo más recomendado. saludos Dairon

0voto

midnightnymph comentado

si el problema es que no quiero hacer eso porque en el momento en el que el usuario cambie el valor seleccionado en la lista se fastidia todo. Quiero recoger los valores todos a la vez cuando el usuario ya envie la informacion. pero gracias por la respuesta =)

2 Respuestas

1voto

Leonardo-Tadei Puntos227320

Hola @midnightnymph,

no deberías tener todos los SELECT con el mismo ID y el mismo NAME, ya que además de complicarte luego con el acceso a los elementos, estás generando código HTML inválido.

Una forma simple de resolver tu problema que no necesita de JQuery ni nada es poner a cada SELECT una clase, y luego usar la función document.getElementsByClassName() que te devolverá un vector con cada SELECT para poder otener el valos seleccionado de cada uno para poder armar la petición y enviar todo.

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName

0voto

midnightnymph comentado

si, ya lo habia solucionado como dijo Leonardo-Tadei, asignando una clase, en vez de un id, no recordaba que los ids eran unicos. He solucionado la parte de las listas desplegables pero quiero hacer lo mismo con una coleccion de inputs de type number, les he aplicado una clase tambien y no hay manera de que coja la coleccion de los inputs..., me dice que es undefined. aqui dejo el codigo, y gracias por las respuestas!!

function listaIngredientes($gdb, $cont){ // crea una lista desplegable con los ingredientes que hay en la base de datos
$resultado=$gdb->query('SELECT nombre FROM ingredientes');
$resultado->setFetchMode(PDO::FETCH_ASSOC);
echo "<div id='desplegable'><label for='ingrediente'>Ingrediente ".$cont."</label><select class='ingrediente' name='ingrediente'>";
while($row=$resultado->fetch()){
    echo "<option value='".$row['nombre']."'>".$row['nombre']."</option>";
}
echo "</select> <label>Cantidad: </label><input class='cantidad' name='cantidad' type='number' min='0'></div>";

}

Lo que hace esta funcion es generar una lista desplegable y tambien un input type number al lado.
He conseguido recoger los valores de las selecciones de las listas pero no consigo recoger los valores de los inputs. Intento hacerlo de este modo pero no funciona:
$('.cantidad') deberia generar una coleccion de los inputs no?? y luego poder acceder a su valor mediante val() o value...

0voto

white comentado

como los estas obteniendo? cual es tu código javascript?

en efecto $('.cantidad') te devuelve una coleccion de elementos, $('.cantidad').val(); te devuelve el valor del primer elemento en el dom.

0voto

midnightnymph Puntos410

ya lo solucione, parece que era cosa de un espacio xd pero mi planteamiento estaba bien. gracias por las respuestas! =)

0voto

Peter comentado

Si al parecer era un espacio, por favor indica donde, cual y selecciona la respuesta como correcta.

Saludos.

0voto

Peter comentado

¿Nada sobre esto?

0voto

midnightnymph comentado

creo que ya seleccione una respuesta, aunque me parece que termine solucionandolo por mi cuenta, de todas maneras ya no me acuerdo muy bien xd lo siento

0voto

Peter comentado

Seleccionaste una respuesta que no es la respuesta, lo solucionas con otra cosa, mencionas que es un espacio pero no compartes nada de información. Al final la pregunta, comentarios y respuestas no tienen sentido...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta