2010-04-29 23 views
67

Tengo un formulario que 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.jQuery Validate Plugin - Activación de validación de un solo campo

¿Hay alguna manera de llamar la validación en ese campo solo? Algo así como:

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

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

Respuesta

121

Este método parece hacer lo que quiere:

$('#email-field-only').valid(); 
+0

gracias! No sabía ... – brainondev

+4

Nota: el nombre del elemento de formulario también funciona con esta función, es decir, '$ ('entrada [nombre = campo de correo electrónico-solo]'). Válido();' también funciona – Raptor

+1

cuál es el problema ? cuando uso este método mi validación se rompe – nakajuice

5

Al configurar su validación, debe haber guardar el objeto validador. puede usar esto para validar campos individuales.

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

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

- cruz publicada con this similar question

-6
$("#element").validate().valid() 
14

Por alguna razón, algunos de los otros métodos no funcionan hasta que el campo se ha centrado/borroneada/cambiada, o una submit se ha intentado ... esto funciona para mí.

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

Tuvo que cavar a través de la secuencia de comandos jquery.validate para encontrarlo ...

+1

Esto es lo que funcionó para mí, también agregué '.valid() 'al final, así que me pareció' $ ("# Form").data ('validator'). element ('input [name = __ suburbio]'). valid(); 'Creo que si no lo selecciona por ID esto podría ser necesario. –

+0

No creo que '.valid()' pertenezca al final de la expresión. La función '.element()' devuelve un resultado booleano ([docs] (https://jqueryvalidation.org/Validator.element/) | [src] (https://github.com/jquery-validation/jquery-validation) /blob/1.16.0/dist/jquery.validate.js#L503)). Cuando intento llamar a .valid() aparece el mensaje de error: * "Unkeught TypeError:' $ (...). Data (...). Element (...). Valid' no es una función "* – KyleMit

+0

¿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 en internos para encontrar el anterior. No se publicó en la documentación, por lo que la estructura puede haber cambiado desde la última vez que lo busqué. – Tracker1

7
$("#FormId").validate().element('#FieldId'); 
+1

Prefiero este método, es un buen liner. Funciona muy bien, gracias. – Andy

+1

Esta es la respuesta perfecta sin ningún error con el tipo de devolución válido –

9

Uso Validator.element():

Validates a single element, returns true if it is valid, false otherwise.

Aquí está el ejemplo mostrado en la API:

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

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

Checks whether the selected form is valid or whether all selected elements are valid.

+0

Funciona, gracias. – Andy

3

Si desea validar campo de formulario individual, pero no desea que la interfaz de usuario para que se activará y mostrará cualquier error de validación, puede considerar usar el método Validator.check() que devuelve si el campo dado pasa la validación o no.

Aquí es ejemplo

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

¡Estaba buscando esta respuesta por tanto tiempo! ¡Esta era la única forma en que la etiqueta de error no aparecía! –

Cuestiones relacionadas