Estou usando o plug-in de validação jQuery para validação do lado do cliente. A função editUser()
é chamada ao clicar no botão 'Editar usuário', que exibe mensagens de erro.
Mas quero limpar as mensagens de erro no meu formulário, quando clico no botão 'Limpar', que chama uma função separada clearUser()
.
function clearUser() {
// Need to clear previous errors here
}
function editUser(){
var validator = $("#editUserForm").validate({
rules: {
userName: "required"
},
errorElement: "span",
messages: {
userName: errorMessages.E2
}
});
if(validator.form()){
// Form submission code
}
}
jquery
jquery-validate
Vicky
fonte
fonte
resetForm()
que não limpa todas as instâncias dos.error
elementos filho do formulário. Isso deixará CSS residual como a cor do texto em vermelho, a menos que você ligue.removeClass()
. Exemplo:$('#myform .control-group').removeClass('error');
Eu me deparei com esse problema. Eu tive a necessidade de validar condicionalmente partes de um formulário enquanto o formulário estava sendo construído com base em etapas (ou seja, certas entradas foram dinamicamente anexadas durante o tempo de execução). Como resultado, algumas vezes um menu suspenso de seleção precisaria de validação e outras vezes não. No entanto, no final da provação, ele precisava ser validado. Como resultado, eu precisava de um método robusto que não fosse uma solução alternativa. Eu consultei o código fonte para
jquery.validate
.Aqui está o que eu vim com:
Aqui está o que parece no código:
compactado como uma extensão jQuery:
fonte
showErrors
faz alguma manipulação do DOM e é chamado para todos os elementos no formulário. O navegador congelou por alguns segundos ao usar esse código em um formulário com ~ 30 controles. A solução para mim foishowErrors
sair do circuito e chamá-lo uma vez logo antesvalidator.resetForm
. Pelo que sei, ele se comporta exatamente da mesma maneira e é muito mais rápido.Se você deseja simplesmente ocultar os erros:
Se você especificou o
errorClass
, chame essa classe para ocultarerror
(o padrão) que eu usei acima.fonte
$(".has-error").removeClass("has-error");
Se você não salvou anteriormente os validadores ao anexá-los ao formulário, também pode simplesmente chamar
como
.validate()
retornará os mesmos validadores que você anexou anteriormente (se você fez isso).fonte
Se você quiser fazê-lo sem usar uma variável separada, então
fonte
Infelizmente,
validator.resetForm()
NÃO funciona, em muitos casos.Eu tenho um caso em que, se alguém clicar no "Enviar" em um formulário com valores em branco, ele deverá ignorar o "Enviar". Sem erros. Isso é fácil o suficiente. Se alguém colocar um conjunto parcial de valores e clicar em "Enviar", deve sinalizar alguns dos campos com erros. Se, no entanto, eles apagarem esses valores e clicarem em "Enviar" novamente, deverá limpar os erros. Nesse caso, por algum motivo, não há elementos na matriz "currentElements" dentro do validador, portanto, a execução
.resetForm()
não faz absolutamente nada.Há bugs publicados nisso.
Até o momento em que eles os corrigem, você precisa usar a resposta de Nick Craver, a resposta NÃO aceita pelos papagaios.
fonte
Você pode usar:
fonte
Eu acho que só precisamos inserir as entradas para limpar tudo
fonte
Se você quiser apenas rótulos de validação claros, poderá usar o código de jquery.validate.js resetForm ()
fonte
Para aqueles que usam o código do Bootstrap 3 abaixo, limparão todo o formulário: mensagens, ícones e cores ...
fonte
Eu testei com:
Tudo ficará bem quando você precisar validá-lo novamente.
fonte
Isso destruirá todos os erros de validação
fonte
No meu caso, ajudou na abordagem:
fonte
Se você deseja ocultar uma validação no lado do cliente que não faz parte de um envio de formulário, use o seguinte código:
fonte
Tentei todas as respostas. A única coisa que funcionou para mim foi:
Usando:
fonte
Nenhuma das outras soluções funcionou para mim.
resetForm()
está claramente documentado para redefinir o formulário real, por exemplo, remover os dados do formulário, o que não é o que eu quero. Às vezes acontece que não faz isso, mas apenas remove os erros. O que finalmente funcionou para mim é o seguinte:fonte
Tente usar isso para remover a validação no clique em cancelar
fonte
Tente usar:
no botão Limpar.
fonte
Para remover o resumo da validação, você pode escrever este
$('div#errorMessage').remove();
No entanto, após a remoção, novamente, se a validação falhar, ele não mostrará este resumo de validação porque você a removeu. Em vez disso, use hide e display usando o código abaixo
fonte
Nenhuma das soluções acima funcionou para mim. Fiquei decepcionado por desperdiçar meu tempo com eles. No entanto, existe uma solução fácil.
A solução foi alcançada comparando a marcação HTML para o estado válido e a marcação HTML para o estado de erro.
Nenhum erro produziria:
quando ocorre um erro, essa div é preenchida com os erros e a classe é alterada para validation-summary-errors:
A solução é muito simples. Limpe o HTML da div que contém os erros e altere a classe novamente para o estado válido.
Feliz codificação.
fonte
Se você deseja redefinir
numberOfInvalids()
também, adicione a seguinteresetForm
função dejquery.validate.js
linha no número da linha do arquivo: 415.fonte
eu apenas fiz
$('.input-validation-error').removeClass('input-validation-error');
para remover a borda vermelha nos campos de erro de entrada.
fonte
$(FORM_ID).validate().resetForm();
ainda não está funcionando como esperado.Estou limpando a forma com
resetForm()
. Funciona em todos os casos, exceto um !!Quando carrego qualquer formulário via Ajax e aplico a validação de formulário após carregar minha dinâmica
HTML
, depois quando tento redefinir o formulárioresetForm()
e ele falha, além de liberar toda a validação que estou aplicando nos elementos do formulário.Portanto, não use isso para formulários carregados no Ajax OU para validação inicializada manualmente.
PS: Você precisa usar a resposta de Nick Craver para esse cenário, como expliquei.
fonte
validator.resetForm()
método limpar texto de erro. Mas se você deseja remover a borda VERMELHA dos campos, é necessário remover a classehas-error
fonte
Função usando as abordagens de Travis J , JLewkovich e Nick Craver ...
fonte
Escreva o próprio código, porque todo mundo usa um nome de classe diferente. Estou redefinindo a validação do jQuery por esse código.
fonte