2010-07-19 5 views
6

¿Cuál es el equivalente de jquery: document.forms[0].elements[i].value;?¿Cuál es el jQuery equivalente a document.forms [0] .elements [i] .value ;?

No sé cómo viajar a través de un formulario y sus elementos en jQuery y me gustaría saber cómo hacerlo.

+1

¿Puede publicar un ejemplo de su marcado y qué valores desea extraer? –

+0

Lea sobre cómo seleccionar cosas aquí: http://api.jquery.com/category/selectors/ y sobre cómo recorrer aquí: http://api.jquery.com/category/traversing/. – karim79

+0

Escribí un script de validación de formulario básico en JavaScript, y estoy tratando de pasarlo a JQUERY. Es un bucle for que busca a través de todos los elementos en la verificación desde para asegurarse de que todos los valores hayan cambiado desde el valor predeterminado (es decir, nombre y apellido) a algo real. El fragmento de código que publiqué está adjunto a una variable que guarda el valor de la entrada actual y la compara con la lista de valores predeterminados. thisVal = document.forms [0] .elements [i] .value; – Ian

Respuesta

13

La traducción habitual es la :input selector:

$("form:first :input").each(function() { 
    alert($(this).val()); //alerts the value 
}); 

El :first es porque tu ejemplo tira de la primera <form>, si sólo hay uno o si desea todos los elementos de entrada, simplemente tome el :first apagado. El :input selector funciona para <input>, <select>, <textarea> ... todos los elementos que normalmente te interesan aquí.

Sin embargo, si supiéramos exactamente cuál es su objetivo, probablemente exista una forma muy simple de lograrlo. Si puede publicar más información, como el HTML y qué valores desea extraer (o hacer algo más con).

+0

+1 Muy limpio. :) –

+0

Gracias por la respuesta. Escribí un script de validación de formulario básico en JavaScript, y estoy tratando de pasarlo a JQUERY. Es un bucle for que busca a través de todos los elementos en la verificación de formularios para asegurarse de que todos los valores hayan cambiado desde el valor predeterminado (es decir, nombre y apellido) a algo real. El fragmento de código que publiqué está adjunto a una variable que guarda el valor de la entrada actual y la compara con la lista de valores predeterminados. thisVal = document.forms [0] .elements [i] .value; – Ian

+0

También tengo 2 formularios en mi página. Mi versión de trabajo actual tiene

para validar ese formulario específico para thisVal = document.forms [formName] .elements [i] .value; – Ian

0

No estoy exactamente seguro de lo que estamos tratando de lograr, pero usted debería ser capaz de hacer algo como esto:

$('form:first').children(':first').val(); 

Esto hará que el valor del primer nodo hijo dentro del primer <form> etiqueta en el DOM.

+2

Esto no devolvería nada ... está seleccionando una etiqueta '' :) –

+0

Gracias @Nick, está en lo cierto: he arreglado mi fragmento. –

+0

Esto sigue siendo incorrecto, no mi voto negativo ... pero no creo que piense correctamente en los selectores, esto devolvería el primer elemento, el ejemplo es un 'elementos [i]', que se traduce bastante cerca de: '$ ('form: first: input'). eq (i) .val();' –

0
$("#formid input").each(function(){ 
    alert($(this).attr("value")) 
}) 
+0

Esto simplemente tomaría campos 'input', no' select' o 'textarea'. –

1

Bueno, traducido literalmente, sería:

$('form:first *:nth-child(i)').val() 

Pero jQuery hace que sea fácil de agarrar elementos de otras maneras, tales como identificación o selector CSS. Sería más fácil de mantener si hiciera algo como:

$('form#id input.name').val() 
0

Esto le dará todos los elementos bajo el formulario. Incluyendo elementos sin forma:

$("#[form id]").find() 

Luego puede usar cada función para recorrer todos los elementos secundarios. O puede utilizar el selector de entrada sólo para devolver los elementos de formulario:

$("#[form id] :input") 
+0

Los controles de formulario generalmente no son hijos del formulario – Quentin

+0

@David Tienes razón. Tienden a estar anidados, aunque no siempre. Supongo que debería haber usado Find o simplemente listar el tipo de controles que queremos devolver. Al menos cambiaré para usar find en su lugar. – spinon

Cuestiones relacionadas