2011-10-27 22 views
8

Tengo un pequeño problema al usar el complemento de validación de jQuery en mis proyectos .net/MVC: La validación generalmente funciona bien, el problema surge en el momento de la presentación: Quiero formar no se enviará cuando haya errores de validación y para esto configuro la depuración: verdadero;Formulario no enviado con la validación de jQuery

Pero después de establecerlo en true cuando el botón de enviar deja de responder, incluso cuando todo está bien, es decir, no hay errores de validación, no ocurre nada al hacer clic en el botón Enviar. Y si elimina la depuración: verdadero, envía el formulario incluso cuando hay errores de validación en él. Quiero una solución a este problema, el camino del medio es decir .: Al hacer clic en Enviar si hay errores que no se envía el formulario y muestra los errores Y si no hay errores de entonces, sólo se somete simple.

Ayuda por favor ... ¡Gracias!

<script type="text/javascript"> 
     $(document).ready(function() { 
$("#productSubmit").validate({ 
    debug : true, rules : { 
    prdctttle : { 
     maxlength : 50, 
     required : true, 
     onlyChars : true } 
    , prdctdscrptn : { 
     maxlength : 250, 
     required : true, 
     onlyChars : true } 
    } 
    , messages : { 
    } 
    } 
); 
} 
); 
$.validator.addMethod('onlyChars', function (value) { 
return /^[a-zA-Z ,-!]+$/.test(value); }, 'Please enter a valid name with only alphabets'); 
    $("#productSubmit").validate({ 
    submitHandler : function(form) { 
    if ($(form).valid()) form.submit(); return false; // prevent normal form posting 
    } 
    } 
); 
</script> 

Respuesta

11

Cambiar la última línea para comprobar si el formulario es válido antes de presentar:

$("#productSubmit").validate({ 
    submitHandler: function(form) {   
          if ($(form).valid()) 
           form.submit(); 
          return false; // prevent normal form posting 
        } 
}); 

EDIT: me olvidó añadir el "return false;" línea para detener el envío del formulario normalmente (por lo que solo ocurre cuando se pasa la validación).

+0

cambié la línea de lista con su código, pero ahora todo el script de validación ha dejado de funcionar .. y cuando estoy clic en Enviar sin entrar nethng su JST refrescante y cuando se presento después de rellenar correctamente toda la información. el navegador que da '" Esta página web no está disponible "' error – Maven

+0

@Maven Darn, tuve la sensación de que podría suceder. Prueba mi código actualizado – GregL

+0

@DGregL, que aún enfrenta un comportamiento weired, Ahora si intento de presentar una formas vacías que da errores de validación de finos 'Este campo es obligatorio', pero después me llena la forma y tratar de enviar el botón de enviar se convierte en insensible como antes. además de no volver a verificar para la validación en el cambio de su valor como antes ...: s – Maven

2

La respuesta de GregL es correcta en su mayor parte.

Lo que finalmente consiguió esta funcionando correctamente para mí también fue la adición de:

onsubmit: false 

código final:

$("#productSubmit").validate({ 
onsubmit: false, 
submitHandler: function(form) { 
    if ($(form).valid()) 
    { 
     form.submit(); 
    } 
    return false; // prevent normal form posting 
} 
}); 

Esto anula el valor por defecto presentar comportamiento, y se ocupa de la comprobación de validación final y presentación dentro del submitHandler.

Cuestiones relacionadas