Tengo una página donde el tipo de entrada siempre varía, y necesito obtener los valores dependiendo del tipo de entrada. Entonces, si el tipo es una radio, necesito obtener cuál está marcada, y si es una casilla de verificación, necesito ahora cuáles están marcadas, y si es un menú desplegable, necesito saber cuál está seleccionada, y si está seleccionada un texto / área de texto Necesito saber los valores.
¿Alguna idea de cómo hacer eso?
Respuestas:
EDITAR el 1 de febrero de 2013. Debido a la popularidad de esta respuesta y los cambios en jQuery en la versión 1.9 (y 2.0) con respecto a propiedades y atributos, agregué algunas notas y un violín para ver cómo funciona al acceder a propiedades / atributos en la entrada, botones y algunas selecciones. El violín aquí: http://jsfiddle.net/pVBU8/1/
obtener todas las entradas:
obtener todo el tipo de entradas:
obtener los valores:
NOTA: .val () NO es lo mismo que: marcado para aquellos tipos donde eso es relevante. utilizar:
EDITAR 1 de febrero de 2013 - re: jQuery 1.9 use prop () not attr () ya que attr no devolverá los valores adecuados para las propiedades que han cambiado.
o simplemente
para obtener el valor del cheque, sea lo que sea actualmente. o simplemente use ': marcado' si desea solo aquellos que ESTÁN marcados.
EDITAR: Aquí hay otra forma de obtener el tipo:
EDIT2: Tenga en cuenta que la forma de:
se perferirá
que ambos equivalen a:
pero se desea la "entrada" para que solo obtenga las entradas y no use el '* "universal cuando
$(':radio')
se usa la forma de que equivale a$('*:radio');
EDITAR 19 de agosto de 2015: se
$('input[type=radio]');
debe usar la preferencia para que así los navegadores modernos optimicen la búsqueda de una entrada de radio.EDITAR el 1 de febrero de 2013 por comentario re: seleccionar elementos @dariomac
devolverá "select-one" o "select-multiple" dependiendo del atributo "multiple" y
devuelve lo mismo para la primera selección si existe. y
devolverá el tipo si existe o "howdy" si no existe.
devuelve la propiedad del primero en el DOM si existe o "indefinido" si no existe ninguno.
devuelve el tipo del primero si existe o un error si no existe ninguno.
fuente
allInputs.attr('type');
solo obtendrá el primer tipo de entrada de elementos, es decir.allInputs[0].attr('type');
si hay más de un elemento en la colección. Lo mismo ocurre conallInputs.val();
Si quería hacer algo con el tipo o valor de cada elemento, que tendría que hacer algo comoallInputs.each(function(){ var type = $(this).attr('type'); var val = $(this).val() });
Podrías hacer lo siguiente:
fuente
Si lo que está diciendo es que desea obtener todas las entradas dentro de un formulario que tengan un valor sin preocuparse por el tipo de entrada, intente esto:
Ejemplo: http://jsfiddle.net/nfLfa/
Ahora debe tener un conjunto de elementos de entrada que tengan algún valor.
Puede poner los valores en una matriz:
O podrías serializarlos:
fuente
fuente
fuente
El mejor lugar para comenzar a buscar es http://api.jquery.com/category/selectors/
Esto le dará un buen conjunto de ejemplos.
Por último, la selección de elementos en el DOM se logra utilizando selectores CSS, por lo que si piensa obtener un elemento por id, querrá usar $ ('# elementId'), si desea que todas las etiquetas de entrada usen $ ('input') y finalmente la parte que creo que querrá si desea que todas las etiquetas de entrada con un tipo de casilla de verificación usen $ ('input, [type = checkbox])
Nota: encontrará que la mayoría de los valores que desea están en los atributos, por lo que el selector css para los atributos es: [attributeName = value]
Solo porque solicitó el menú desplegable como se indica en un cuadro de lista, intente lo siguiente:
El código era de la memoria, así que acéptelo por pequeños errores.
fuente
Comentarios:
Supongo que hay exactamente un elemento de formulario, que puede ser un área de texto, un campo de entrada, un formulario de selección, un conjunto de botones de opción o una sola casilla de verificación (tendrá que actualizar mi código si necesita más casillas de verificación).
El elemento en cuestión vive dentro de un elemento con ID
container
(para eliminar ambigüedades con otros elementos en la página).El código devolverá el valor del primer elemento coincidente que encuentre. Como uso,
:checked
etc., esto siempre debe ser exactamente el valor de lo que estás buscando.fuente
Parece que la funcionalidad del atributo se está desaprobando aún más
fuente
En mi aplicación, terminé con dos elementos diferentes que tienen la misma identificación (mala). Un elemento era un div y el otro una entrada. Estaba tratando de resumir mis entradas y me tomó un tiempo darme cuenta de los identificadores duplicados. Al colocar el tipo del elemento que quería delante de #, pude tomar el valor del elemento de entrada y descartar el div:
Espero que ayude.
fuente
fuente
fuente