jQuery Validate Plugin - Activa la validación de un solo campo

90

Tengo un formulario que opcionalmente se puede completar previamente a través de Facebook Connect. Una vez que un usuario se conecta, su nombre y correo electrónico se completan automáticamente. El problema es que esto no activa la validación remota para verificar si el correo electrónico ya existe.

¿Hay alguna forma de que pueda llamar a la validación solo en ese campo? Algo como:

$('#email-field-only').validate()

sería idea. Busqué en los documentos sin suerte.

Ryan
fuente

Respuestas:

147

Este método parece hacer lo que quieres:

$('#email-field-only').valid();
Gregoire
fuente
4
Nota: el nombre del elemento del formulario también funciona con esta función, es decir, $('input[name=email-field-only]').valid();también funciona
Raptor
1
¿Cuál es el problema? cuando uso este método, mi validación se rompe
nakajuice
2
Esta solución valida todo el formulario, mostrando los mensajes de error para todos los campos.
Pablo
@haemhweg, ¿tal vez no llamaste al método .validate () antes de intentar usar el .valid () ? Los documentos: jqueryvalidation.org/valid
userfuser
1
La API ha cambiado, use la respuesta proporcionada por Paul
Anima-t3d
24

Utilizar Validator.element():

Valida un solo elemento, devuelve verdadero si es válido, falso en caso contrario.

Aquí está el ejemplo que se muestra en la API:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()valida todo el formulario, como han señalado otros. La API dice:

Comprueba si el formulario seleccionado es válido o si todos los elementos seleccionados son válidos.

Paul
fuente
20

Por alguna razón, algunos de los otros métodos no funcionan hasta que el campo se ha enfocado / borrado / cambiado, o se ha intentado un envío ... esto funciona para mí.

$("#formid").data('validator').element('#element').valid();

Tuve que buscar en el script jquery.validate para encontrarlo ...

Rastreador1
fuente
1
Esto es lo que funcionó para mí, también agregué .valid()al final, así que me $("#Form").data('validator').element('input[name=__Suburb]').valid(); buscó.Creo que si no lo selecciona por ID, esto podría ser necesario.
Mihai P.
2
No creo que .valid()pertenezca al final de la expresión. La .element()función devuelve un resultado booleano ( docs | src ). Cuando intento llamar .valid (), aparece el mensaje de error: "$(...).data(...).element(...).valid
detectado
¿Adjuntó el validador al formulario? Han pasado algunos años desde que utilicé la validación de JQuery ... Así que la API para esto puede haber cambiado. En ese momento tuve que trabajar a través de los componentes internos para encontrar lo anterior. No se publicó en la documentación, por lo que es posible que la estructura haya cambiado desde la última vez que miré.
Tracker1
16
$("#FormId").validate().element('#FieldId');
aslanpayi
fuente
2
Prefiero este método, es un buen delineador 1. Funciona muy bien, gracias.
Andy
1
Esta es la respuesta perfecta sin ningún error con un tipo de retorno válido
Kaushik Thanki
7

Cuando configure su validación, debería estar guardando el objeto de validación. puede usar esto para validar campos individuales.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- publicado con esta pregunta similar

ShaneBlake
fuente
7

Si desea validar un campo de formulario individual, pero no desea que la interfaz de usuario se active y muestre errores de validación, puede considerar usar el método Validator.check () que devuelve si el campo dado pasa la validación o no.

He aquí un ejemplo

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}
Dmitry Komin
fuente
0

en caso de que quiera hacer la validación para "algunos elementos" (no todos los elementos) en su formulario. Puede usar este método:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Espero que ayude a todos :)

EDITADO

Peps
fuente
-6
$("#element").validate().valid()
Juan
fuente