2010-08-12 16 views
6

Estoy tratando de obtener los valores de múltiples entradas de formulario, pero el problema es que tengo varios formularios idénticos en la misma página y solo quiero obtener las entradas del formulario que se envió, entonces estoy usando la palabra clave 'this'. Este es mi código:jQuery obtener ESTE formulario de entrada

$('form.contact_form').submit(function(e) { 
    var fname = $(this).children('input.fname').val(); 
    var email = $(this).children('input.email').val(); 
    var comment = $(this).children('input.comment').val(); 

Sin embargo, cuando intento acceder las variables para probar que están devolviendo los valores incorrectos, se dice que son todos indefinido. ¿Cuál sería la forma correcta de hacer esto?

Gracias por cualquier ayuda: D

+0

y en vez de usar 'this', es posible que desee considerar el uso de' var $ target = $ (e.target) 'para obtener el elemento de origen del evento ... es más descriptivo. – CaffGeek

Respuesta

7

Necesito ver el HTML.

Pero, ¿son hijos directos de la forma?
¿O debería estar usando .find, en lugar de .children porque están anidados más abajo?

+0

Yesss, muchas gracias lol, error estúpido, tampoco estoy familiarizado con el código ... ¡usando smarty y el formulario está en otro archivo de plantilla, así que ni siquiera pensé en buscarlo! Por algún motivo, el formulario está en una tabla ... por lo que las entradas estaban bastante anidadas ...:/¡Aceptaré tu respuesta en unos minutos! No me deja cajero automático. – Becky

3

incluso se puede utilizar 'este' contexto

var fname = $('input.fname', this).val(); 
2

Uso .find() como sugirió el Chad.

$('form.contact_form').submit(function(e) { 
    var $this = $(this); 
    var fname = $this.find('input.fname').val(); 
    var email = $this.find('input.email').val(); 
    var comment = $this.find('input.comment').val(); 

}); 
+0

esta es la sintaxis más limpia, sin juego de palabras. – g33kz0r

Cuestiones relacionadas