2011-09-16 21 views
5

Estoy usando jQuery validate para validar una entrada. Mi código:Validar un formulario en el evento Click con validador jQuery

$('#button').click(function() {  
    $("#form").validate({    
     rules: { 
      phone: { 
       required: true, 
       number: true, 
       rangelength: [7, 14] 
      } 
     } 
    }); 
}); 

Y el HTML:

<form id="form" name="form" method="post" action=""> 
<input id="phone" name="phone" class="required" type="text" /> 
<div class="button" id="send_b">Send</div> 
</form> 

Este código no está funcionando. Si añado esta línea de jQuery

$("#form").submit(); 

dentro del evento click funciona. Pero no quiero enviar el formulario, así que solo quiero hacer la validación al hacer clic.

¿Alguien sabe cómo hacer esto?

+0

dar más detalles sobre "no trabajar". ¿Qué está haciendo que no lo esperas? – BishopRook

+0

IIRC 'validate()' no * hace * la validación, * configura * la validación para el envío. Examine el código para ver si se puede poner en cortocircuito, o si hay un método al que puede llamar y que solo hace la validación. –

Respuesta

13

Sólo tiene que añadir .form() para activar manualmente la validación de inmediato (el comportamiento por defecto espera un evento enviar):

$('#button').click(function() {  
    $("#form").validate({    
    rules: { 
     phone: { 
     required: true, 
     number: true, 
     rangelength: [7, 14] 
     } 
    } 
    }).form(); 
}); 
+0

¡Genial! ¡Funciona! ¡Muchas gracias! – novellino

0

Su código es vinculante una función al click caso de un botón. Lo que está haciendo es decir "cuando se hace clic en este botón, aplicar la validación del formulario al formulario".

Esta es la forma incorrecta de usar el complemento de validación (supongo que está utilizando el complemento de validación this). En su lugar, solo ejecuta el método validation() directamente en el elemento form; el complemento se ocupa del evento submit.

Por lo tanto, deshacerse de la vinculación del evento click.

+0

Acabo de enterarme de un problema en el que estoy validando un solo cuadro de entrada y el valor es un parámetro para un enlace. Pero creo que tienes razón, validará el clic automáticamente. – yardpenalty

0

Uso form method método form() con su evento click

Cuestiones relacionadas