Eu tenho este formulário no meu aplicativo e o enviarei via AJAX, mas quero usar o HTML5 para validação do lado do cliente. Então, eu quero poder forçar a validação do formulário, talvez via jQuery.
Quero acionar a validação sem enviar o formulário. É possível?
jquery
html
validation
razenha
fonte
fonte
Respostas:
Para verificar se um determinado campo é válido, use:
Para verificar se o formulário é válido, use:
Se você deseja exibir as mensagens de erro nativas que alguns navegadores possuem (como o Chrome), infelizmente a única maneira de fazer isso é enviando o formulário da seguinte forma:
Espero que isto ajude. Lembre-se de que a validação HTML5 não é suportada em todos os navegadores.
fonte
$myForm.submit()
por$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, mas também possui um erro perigoso.checkValidity()
é o que aciona as mensagens de erro do navegador nativo, não o clique no botão enviar. Se você tem um ouvinte de eventos que ouve o clique do botão de envio, você o acionará quando fizer '$ myForm.find (': submit '). Click () `, que será acionado automaticamente e causará recursão infinita.Encontrei esta solução para trabalhar para mim. Basta chamar uma função javascript como esta:
action="javascript:myFunction();"
Então você tem a validação html5 ... realmente simples :-)
fonte
action="javascript:0"
o evento<form>
e ligueiclick
no<button>
paraMyFunction()
e tudo funcionou muito bem. Eu mantenho todas as JS fora do HTML.MyFunction
pode então testarform.checkValidity()
para continuar.onsubmit()
é quase sempre melhor do que os de um botãoonclick()
, pois existem outras maneiras de enviar um formulário. (Notavelmente pressionando areturn
tecla.)action="javascript:myFunction();"
ouaction="javascript:0"
obras mais no mais recente Firefox (67). Funciona no Chrome.de: validação de formulário html5
fonte
reportValidity
é suportado apenas pelo Chrome 40.0$("form")[0].reportValidity()
. Preciso que, caso a verificação de validade falhe.o código abaixo funciona para mim,
fonte
reportValidity()
é a melhor função para destacar os campos obrigatórios.Aqui está uma maneira mais geral que é um pouco mais limpa:
Crie seu formulário assim (pode ser um formulário fictício que não faz nada):
Vincule todos os formulários que você realmente não deseja enviar:
Agora, digamos que você tenha
<a>
(dentro do<form>
) que, no clique, deseja validar o formulário:Algumas notas aqui:
checkValidity()
é suficiente (pelo menos no chrome). Se outras pessoas puderem adicionar comentários ao testar essa teoria em outros navegadores, atualizarei esta resposta.<form>
. Esta foi apenas uma maneira limpa e flexível de ter uma solução de uso geral.fonte
Pode ser tarde para a festa, mas, de alguma forma, encontrei essa pergunta ao tentar resolver um problema semelhante. Como nenhum código desta página funcionou para mim, enquanto isso, eu vim com uma solução que funciona conforme especificado.
O problema é quando o seu
<form>
DOM contém um único<button>
elemento, uma vez acionado, que<button>
substituirá automaticamente o formulário. Se você joga com AJAX, provavelmente precisará impedir a ação padrão. Mas há um problema: se você fizer isso, também impedirá a validação básica do HTML5. Portanto, é bom chamar para evitar padrões nesse botão somente se o formulário for válido. Caso contrário, a validação HTML5 o protegerá contra o envio. O jQuerycheckValidity()
ajudará com isso:jQuery:
O código descrito acima permitirá que você use a validação HTML5 básica (com correspondência de tipo e padrão) SEM enviar o formulário.
fonte
Você fala de duas coisas diferentes "validação HTML5" e validação do formulário HTML usando javascript / jquery.
O HTML5 "possui" opções internas para validar um formulário. Como usar o atributo "obrigatório" em um campo, que pode (com base na implementação do navegador) falhar no envio do formulário sem usar javascript / jquery.
Com javascrip / jquery, você pode fazer algo assim
fonte
triggerHtml5Validation()
função. O código acima anexará o evento de envio ao seu formulário; ao enviar, você intercepta o evento e valida o formulário. Se você nunca quiser enviar o formulário, simplesmentereturn false;
e o envio nunca ocorrerá.return (valid) ? true : false
===return valid
. :)return valid
não retorna false para valores nulos / indefinidos. Mas isso realmente não importa, a resposta foi pseudo-código de qualquer maneira, o ponto é: false uso retorno ao não enviar o formulário ^^fonte
Para verificar todos os campos obrigatórios do formulário sem usar o botão enviar, você pode usar a função abaixo.
Você deve atribuir o atributo necessário aos controles.
fonte
Você não precisa do jQuery para conseguir isso. No seu formulário, adicione:
ou em JavaScript:
Na sua
buttonSubmit
função (ou como você chama), você pode enviar o formulário usando o AJAX.buttonSubmit
só será chamado se seu formulário for validado em HTML5.Caso isso ajude alguém, aqui está minha
buttonSubmit
função:Alguns dos meus formulários contêm vários botões de envio, portanto, esta linha
if (submitvalue == e.elements[i].value)
. Defino o valor dosubmitvalue
uso de um evento click.fonte
Eu tive uma situação bastante complexa, onde eu precisava de vários botões de envio para processar coisas diferentes. Por exemplo, Salvar e excluir.
A base era que também era discreto, então eu não podia simplesmente torná-lo um botão normal. Mas também queria utilizar a validação html5.
O evento de envio também foi substituído caso o usuário pressionasse enter para acionar o envio padrão esperado; neste exemplo, salve.
Aqui estão os esforços do processamento do formulário para continuar trabalhando com / sem javascript e com a validação html5, com eventos de envio e clique.
xHTML
Javascript
A ressalva de usar o Javascript é que o onclick padrão do navegador deve se propagar para o evento de envio DEVE ocorrer para exibir as mensagens de erro sem oferecer suporte a cada navegador no seu código. Caso contrário, se o evento click for substituído por event.preventDefault () ou retornar false, ele nunca será propagado para o evento de envio do navegador.
O ponto a ser destacado é que em alguns navegadores não acionará o envio do formulário quando o usuário pressionar enter, em vez disso, acionará o primeiro botão de envio no formulário. Portanto, existe um console.log ('envio de formulário') para mostrar que ele não é acionado.
fonte
jQuery
explicitamente. Difere no fato de lidar com o processamento da validação HTML5 com vários botões de envio e impede o envio do formulário AJAX quando inválido. O padrão é asave
ação quando o usuário pressiona aenter
tecla no teclado. Que, no momento da postagem, nenhuma das respostas fornecidas era uma solução para vários botões de envio ou a captura da tecla Enter para impedir o envio do ajax.Você pode fazer isso sem enviar o formulário.
Por exemplo, se o botão de envio do formulário com o ID "pesquisa" estiver no outro formulário. Você pode chamar o evento click nesse botão de envio e chamar ev.preventDefault depois disso. Para o meu caso, valido o formulário B a partir do envio do formulário A. Como isso
fonte
Dessa forma, funciona bem para mim:
Adicione
onSubmit
atributo no seuform
, não se esqueça de incluirreturn
no valor.Defina a função.
fonte
Não é a melhor resposta, mas funciona para mim.
fonte
Sei que isso já foi respondido, mas tenho outra solução possível.
Se estiver usando jquery, você pode fazer isso.
Primeiro, crie algumas extensões no jquery para poder reutilizá-las conforme necessário.
Em seguida, faça algo assim onde você deseja usá-lo.
fonte
fonte
Isso funcionou comigo para exibir as mensagens de erro HTML 5 nativas com validação de formulário.
Nota: RegForm é o
form id
.Referência
A esperança ajuda alguém.
fonte
Essa é uma maneira bastante direta de o HTML5 executar a validação para qualquer formulário, enquanto ainda possui controle JS moderno sobre o formulário. A única ressalva é que o botão enviar deve estar dentro do
<form>
.html
js
fonte
Eu acho que a melhor abordagem
estará usando a validação jQuery plugin que utiliza as melhores práticas para validação de formulários e também possui um bom suporte ao navegador. Portanto, você não precisa se preocupar com problemas de compatibilidade do navegador.
E podemos usar a função validation () da validação do jQuery, que verifica se o formulário selecionado é válido ou se todos os elementos selecionados são válidos sem enviar o formulário.
fonte
De acordo com a pergunta, a validade do html5 deve ser validada usando o jQuery no início e na maioria das respostas isso não está acontecendo e a razão para isso é a seguinte:
ao validar usando a função padrão do formulário html5
precisamos entender que o jQuery retorna a matriz de objetos, enquanto seleciona assim
portanto, você precisa especificar o primeiro índice para que a função checkValidity () funcione
aqui está a solução completa:
fonte