jQuery Validate Plugin - validação de gatilho de campo único


89

Eu tenho um formulário que pode opcionalmente ser pré-preenchido via Facebook Connect. Depois que um usuário se conecta, seu nome e e-mail são preenchidos automaticamente. O problema é que isso não aciona a validação remota para verificar se o e-mail já existe.

Existe uma maneira de chamar a validação apenas nesse campo? Algo como:

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

seria ideia. Procurei nos documentos sem sorte.

Respostas:


146

Este método parece fazer o que você deseja:

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

4
Nota: o nome do elemento do formulário também funciona com esta função, ou seja, $('input[name=email-field-only]').valid();também funciona
Raptor

1
qual é o problema? quando eu uso esse método, minha validação é interrompida
nakajuice

2
Esta solução valida todo o formulário, mostrando as mensagens de erro para todos os campos.
Pablo

@haemhweg, talvez você não tenha chamado o método .validate () antes de tentar usar o .valid () ? Os documentos: jqueryvalidation.org/valid
userfuser

1
A API mudou, use a resposta fornecida por Paul
Anima-t3d

23

Use Validator.element():

Valida um único elemento, retorna verdadeiro se for válido, falso caso contrário.

Aqui está o exemplo mostrado na API:

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

.valid()valida todo o formulário, como outros apontaram. A API diz:

Verifica se o formulário selecionado é válido ou se todos os elementos selecionados são válidos.


20

Por alguma razão, alguns dos outros métodos não funcionam até que o campo tenha sido focalizado / manchado / alterado, ou um envio tenha sido tentado ... isso funciona para mim.

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

Tive que vasculhar o script jquery.validate para encontrá-lo ...


1
Isso é o que funcionou para mim, também adicionei .valid()no final para que procure por mim $("#Form").data('validator').element('input[name=__Suburb]').valid(); , acredito que se você não selecionar por ID isso pode ser necessário.
Mihai P.

2
Não acho que .valid()pertença ao final da expressão. A .element()função retorna um resultado booleano ( docs | src ). Quando tento chamar .valid (), recebo a mensagem de erro: "Uncaught TypeError: $(...).data(...).element(...).validnão é uma função"
KyleMit

Você anexou o validador ao formulário? já se passaram alguns anos desde que usei a validação JQuery ... Portanto, a API para isso pode ter mudado. Na época, tive que trabalhar com os internos para encontrar o que estava acima. Não foi publicado na documentação, então a estrutura pode muito bem ter mudado desde a última vez.
Tracker1,

16
$("#FormId").validate().element('#FieldId');

2
Eu prefiro este método, é um bom revestimento. Funciona muito bem, obrigado.
Andy

1
Esta é a resposta perfeita sem nenhum erro com tipo de retorno válido
Kaushik Thanki

7

Ao configurar sua validação, você deve salvar o objeto validador. você pode usar isso para validar campos individuais.

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

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

- postado cruzado com esta pergunta semelhante


7

Se você deseja validar um campo de formulário individual, mas não deseja que a IU seja acionada e exiba quaisquer erros de validação, você pode considerar o uso do método Validator.check () que retorna se o campo fornecido passar na validação ou não.

Aqui está um exemplo

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

0

caso você queira fazer a validação de "alguns elementos" (não todos os elementos) em seu formulário. Você pode usar este método:

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

Espero que ajude a todos :)

EDITADO


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.