2011-05-11 28 views
36

Estoy usando jQuery validate para validar un formulario. Tengo dos cuadros de texto en mi formulario y solo el primero agregará "Este campo es obligatorio". mensaje. Si elimino la clase "requerida" de la primera, la segunda tendrá el mensaje.jQuery validate valida solo un campo

html:

<form id="questionForm"> 
<div><input class="required" id="value" type="text" /></div> 
<div><textarea class="required" id="description"></textarea></div> 
<button type="submit">Save</button> 
</form> 

javascript:

$("#questionForm").validate({ submitHandler: function() { 
     alert("valid"); 
    } 
}); 

¿Por qué sólo uno está siendo validada?

Editar: Estoy usando el plug-in de validación de jQuery 1,7

Edición 2: Estoy usando MVC 3

Respuesta

102

Acabo de toparme con este problema yo mismo. Tirado mi pelo durante una hora, pero aquí está:

Tire el atributo "nombre" en allí también y que puede hacer el truco.

+2

En sus campos de entrada, quiero decir :) :) – Jay

+8

Dude gracias ! casi me golpeó la cabeza contra el teclado debido a esto. –

+0

Pasé una hora depurando mi formulario por un simple problema. ¡Estaba a punto de quemarme las cejas al inspeccionar cada letra de mi código! ¡Muchas gracias! – optimum

1

Sin saber lo que la validación el plugin que está usando, es difícil resolver el problema. Sin embargo, parece como si jQuery no fuera un bucle a través de cada uno de los campos, pero se detiene cuando llega a un campo no válido. Intente utilizar el método jQuery $.each() y use algunos condicionales para asegurarse de que el proceso de validación no se detenga cuando el validador llegue a un campo no válido.

Espero que ayude,
spryno724

1

creo que la alerta está bloqueando la validación de ambos campos. Después de 1 alerta, el resto del javascript se detiene. ¿Qué ocurre si usa $('#questionForm').validate();?

+0

No, no es eso. Intenté su sugerencia y también eliminé la alerta() y no funcionó. Pensé que el controlador de envío era una función de devolución de llamada por lo que no se llamará hasta que se valide el formulario. –

+0

No estoy seguro tampoco, pero me enfrenté al problema más de una vez que un ciclo fue detenido por una alerta. No estoy seguro por qué ya que no debe devolver nada. –

+0

y lo que obtengo de la documentación tiene razón: parece que debe llamarse cuando se valida el formulario (de manera predeterminada es simplemente 'form.submit();' –

1

Debe ingresar el atributo name para cada elemento DOM que desee validar utilizando la función Jquery.validate().

Cuestiones relacionadas