2012-09-18 39 views
8

Estoy usando el complemento de validación de jQuery y he definido una función de validación de formulario como se muestra a continuación. Basado en alguna acción del usuario estoy ejecutando una función JS personalizada y en esa función solo quiero verificar si los campos de correo electrónico y teléfono son válidos. Pero No quiero validarlos, es decir, no quiero mostrar los errores de validación, solo necesito verificar si su valor es válido.jQuery Validation plugin - compruebe si el campo es válido (pero no muestra el mensaje de validación)

Algo así como

$('#email').isvalid(); 

He comprobado a cabo el método de Validador element pero que valida el elemento en lugar de sólo comprobar si su valor es válido. Entonces, en otras palabras, estoy buscando una forma de ejecutar las reglas programáticamente. ¡Cualquier ayuda es apreciada!

forma de función de validación a continuación:

var validator = $("#olForm").validate({ 
    rules: { 
     "email": { 
      required: true, 
      email: true 
     }, 
     "phone": { 
      required: true, 
      digits: true, 
      minlength: 9, 
      maxlength: 11 
     } 
    } 
}); 
+0

** Cita ** _ "No quiero validarlos, es decir,simplemente verifique si su valor es válido. "_ ~ Um, eso es validación ... verificando si el campo es válido. Por favor explique más acerca de lo que quiere ... diciendo," No quiero validar pero quiero verificar validez "no tiene sentido. – Sparky

+1

@ Sparky672 No quiere mostrar los resultados de la validación (por ejemplo, mensajes de error), solo quiere verificar internamente que sean correctos. –

+1

@MikeRobinson, si todo eso es cierto, entonces tiene que decirlo No estoy haciendo suposiciones así que le pido al OP que aclare su pregunta mal formulada. – Sparky

Respuesta

9

En respuesta a la jsFiddle original, por favor ver esta versión:

http://jsfiddle.net/33PGQ/23/

Esta es modificado de tres maneras: en primer lugar, en la parte inferior, un simple valor booleano se establece en igual si ambos campos son válidos (luego se alerta). Como cada llamada válida() devuelve un valor booleano, puede verificar simple y fácilmente la validez de todos los elementos del formulario.

En segundo lugar, la opción de validar se expande con una función showErrors personalizada que no tiene código interno. Esta función anula el comportamiento predeterminado de los errores de validación, de modo que mientras se puede verificar la validez interna de los campos y se maneja la validez de los campos, no se muestra ningún texto de error real, permitiendo así todas las reglas de validación pero eliminando la visualización de los resultados de validación

Por último, aunque no se solicita explícitamente en la pregunta inicial, que añade la opción "onsubmit: true" ajuste, que anula el comportamiento por defecto de la llamada de validación de impedir el envío de formularios a menos que todas las reglas de validación se comprueban con éxito. Esto se puede eliminar si desea evitar el envío (supongo que lo haría), pero creo que es una función útil que debe tener en cuenta. Lo incluí aquí en caso de que tuvieras un caso especial en el que quisieras que el formulario se enviara aunque la validación del formulario haya fallado.

Definitivamente vale la pena revisar la lista de opciones para validar; Hay muchas maneras en que puede ajustar el comportamiento del validador para que se adapte exactamente a lo que desea.

+1

En realidad, necesito mensajes para las validaciones de campo (en caso de envío de formularios). También necesito validar el formulario en el envío. Pero me alegué a usar la función showErrors para mostrar los errores solo si configuré un indicador booleano. Ver http://jsfiddle.net/dSu3X/5/ Entonces ... gracias. ¡La recompensa es tuya! – arahant

+0

en 7 horas según SO – arahant

1

Suena como que usted está buscando el método .valid(). Tenga en cuenta que todavía tiene que ejecutar validate() contra todo el formulario para inicializar el widget.

http://docs.jquery.com/Plugins/Validation/valid

+0

Dice validar() necesita ser llamado en el formulario antes de verificarlo usando este método. Entonces, ¿supongo que no funcionará si lo llamo antes de validar todo el formulario al menos una vez? – arahant

+2

Consulte http://jsfiddle.net/33PGQ/ 19/El método válido también está activando la validación, w que es algo opuesto a lo que se afirma en la documentación. – arahant

+0

Compruebe http://jsfiddle.net/33PGQ/21/ El método válido también devuelve el valor correcto antes de llamar al método $ ("# form1"). Validate. ¡Esto es nuevamente opuesto a lo que se afirma en la documentación! – arahant

2

Hay un handy method called .checkForm() (no documentado a partir de septiembre de 2015), lo que hace que esto sea realmente fácil. A diferencia de llamar .valid(), esto no va a mostrar errores de forma cuando se llama:

// Returns a boolean 
$('form').validate().checkForm(); 
+0

Esto valida todo el formulario, la operación estaba solicitando un campo específico. –

4

Hay un indocumentado cheque método () que hace esto en concreto sin tener que labrar los campos o que muestren errores:

var validator = $('form').validate(); 
if(validator.check('#email')){ 
    // this field is valid but no styling was applied 
} 
Cuestiones relacionadas