Quero disparar a validação manualmente, incluindo a exibição de mensagens de erro com o jQuery Validate .
O cenário que estou tentando realizar é um formulário como este:
<form>
<input id=i1> <button id=b1>
<input id=i2> <button id=b2>
</form>
Ao clicar b1
, somente i1
deve ser validado. Ao clicar b2
, somente i2
deve ser validado. No entanto, todos os campos devem ser publicados. Como posso fazer isso? Pensei em manipular o evento click b1/b2
e validar manualmente uma parte do formulário.
Respostas:
Essa biblioteca parece permitir a validação de elementos únicos. Basta associar um evento de clique ao seu botão e tente o seguinte:
Exemplos aqui:
https://jqueryvalidation.org/Validator.element
fonte
Ou pode-se simplesmente usar:
$('#myElem').valid()
Observe que
validate()
precisa ser chamado no formulário antes de verificar usando este método.Link da documentação: https://jqueryvalidation.org/valid/
fonte
validate()
precisa ser chamado no formulário antes de verificar usando este método.Minha abordagem foi a seguinte. Agora, eu só queria que meu formulário fosse validado quando uma caixa de seleção específica foi clicada / alterada:
fonte
Conforme escrito na documentação , a maneira de acionar a validação de formulário programaticamente é invocar validator.form ()
fonte
Existe um método não documentado a partir da versão 1.14
Este método é validado silenciosamente para retornar verdadeiro / falso. Não dispara mensagens de erro.
fonte
Eva M de cima, quase teve a resposta conforme postada acima (Obrigado Eva M!):
Essa é quase a resposta, mas causa problemas, mesmo no plug-in de validação de jquery mais atualizado a partir de 13 de dezembro de 2018. O problema é que, se alguém copia diretamente esse exemplo, e NUNCA chama ".validate ()" mais de uma vez , o processamento do foco / chave da validação pode ser interrompido e a validação pode não mostrar erros corretamente.
Aqui está como usar a resposta de Eva M e garantir que esses problemas de foco / chave / ocultação de erros não ocorram:
1) Salve seu validador em uma variável / global.
2) NÃO chame $ ("# myform"). Validate () EVER novamente.
Se você chamar $ ("# myform"). Validate () mais de uma vez, isso poderá causar problemas de foco / chave / ocultação de erros.
3) Use a variável / global e o formulário de chamada.
fonte
No meu caso semelhante, eu tinha minha própria lógica de validação e só queria usar a validação do jQuery para mostrar a mensagem. Foi o que eu fiz.
fonte
Eu tentei funcionou tnx @Anastasiosyal eu quero compartilhá-lo nesta discussão.
Não sei como os campos de entrada não foram acionados quando esvaziei os campos. Mas consegui acionar cada campo obrigatório individualmente usando:
aqui está a minha opinião
e minha entidade
fonte
Existe uma boa maneira de usar os
validate()
parâmetros em um formulário e desejar validar um campo do formulário manualmente posteriormente:Documentação: Validator.element ()
fonte