Validação personalizada de campo necessária
Tenho um formulário com muitos campos de entrada. Eu coloquei validações html5
<input type="text" name="topicName" id="topicName" required />
quando eu envio o formulário sem preencher esta caixa de texto, ele mostra a mensagem padrão como
"Please fill out this field"
Alguém pode me ajudar a editar esta mensagem?
Eu tenho um código javascript para editá-lo, mas não está funcionando
$(document).ready(function() {
var elements = document.getElementsByName("topicName");
for (var i = 0; i < elements.length; i++) {
elements[i].oninvalid = function(e) {
e.target.setCustomValidity("");
if (!e.target.validity.valid) {
e.target.setCustomValidity("Please enter Room Topic Title");
}
};
elements[i].oninput = function(e) {
e.target.setCustomValidity("");
};
}
})
Validações personalizadas de email
Eu tenho o seguinte formulário HTML
<form id="myform">
<input id="email" name="email" type="email" />
<input type="submit" />
</form>
Mensagens de validação que eu quero gostar.
Campo obrigatório: Digite o endereço de
e-mail E-mail incorreto: 'testing @ .com' não é um endereço de e-mail válido. ( aqui, endereço de e-mail inserido exibido na caixa de texto )
Eu tentei isso
function check(input) {
if(input.validity.typeMismatch){
input.setCustomValidity("'" + input.value + "' is not a Valid Email Address.");
}
else {
input.setCustomValidity("");
}
}
Esta função não está funcionando corretamente. Existe alguma outra maneira de fazer isso? Isso seria apreciado.
javascript
jquery
html
Sumit Bijvani
fonte
fonte
Respostas:
Fragmento de código
Uma vez que esta resposta chamou muita atenção, aqui está um bom snippet configurável que eu criei:
Uso
→ jsFiddle
Mais detalhes
defaultText
é exibido inicialmenteemptyText
é exibido quando a entrada está vazia (foi apagada)invalidText
é exibido quando a entrada é marcada como inválida pelo navegador (por exemplo, quando não é um endereço de e-mail válido)Você pode atribuir uma string ou uma função a cada uma das três propriedades.
Se você atribuir uma função, ela pode aceitar uma referência ao elemento de entrada (nó DOM) e deve retornar uma string que é exibida como a mensagem de erro.
Compatibilidade
Testado em:
Resposta antiga
Você pode ver a revisão antiga aqui: https://stackoverflow.com/revisions/16069817/6
fonte
please fill out this field
você pode alterar esta mensagem paraPlease enter email address
setCustomValidity()
para e-mails vazios apenas depois que o evento blur foi disparado uma vez, portanto, só precisamos chamá-lo no carregamento do DOM também. Veja o exemplo atualizado / jsFiddle.if (input.value == "") {
, para, em vez disso, lerif (input.value.trim() == "") {
- faz o truque para mim.Você pode simplesmente conseguir isso usando o atributo oninvalid, verifique este código de demonstração
Codepen Demo: https://codepen.io/akshaykhale1992/pen/yLNvOqP
fonte
oninput="setCustomValidity('')"
: stackoverflow.com/a/16878766/1729850HTML:
JAVASCRIPT:
Demo:
http://jsfiddle.net/patelriki13/Sqq8e/
fonte
Experimente isto:
Eu testei isso no Chrome e FF e funcionou em ambos os navegadores.
fonte
<b>Error: </b> Incorrect email address
.setCustomValidity("")
não ajuda. Existe algum outro parâmetro que precisa ser definido? Por favor informar.Cara, eu nunca fiz isso em HTML 5 mas vou tentar. Dê uma olhada neste violino.
Usei alguns jQuery, eventos e propriedades nativos de HTML5 e um atributo personalizado na tag de entrada (isso pode causar problemas se você tentar validar seu código). Não testei em todos os navegadores, mas acho que pode funcionar.
Este é o código JavaScript de validação de campo com jQuery:
Agradável. Aqui está o formulário simples html:
O atributo
requiredmessage
é o atributo personalizado de que falei. Você pode definir sua mensagem para cada campo obrigatório, pois o jQuery obterá dele quando exibir a mensagem de erro. Você não precisa definir cada campo diretamente no JavaScript, o jQuery faz isso por você. Essa regex parece estar bem (pelo menos bloqueia seu[email protected]
! Haha)Como você pode ver no fiddle, eu faço uma validação extra do evento de formulário de envio ( isso vai para document.ready também ):
Espero que isso funcione ou ajude de alguma forma.
fonte
data-
prefixo padrão ; por exemplodata-requiredMessage
. Com jQuery, isso é acessível com$(element).data('requiredMessage')
; Eu não sei a interface DOM padrão de cabeça.Isto funciona bem para mim:
e a forma que estou usando (truncada):
fonte
Você pode fazer isso configurando um ouvinte de evento para o 'inválido' em todas as entradas do mesmo tipo, ou apenas uma, dependendo do que você precisa e, em seguida, configurando a mensagem apropriada.
Na segunda parte do script, a mensagem de validade será zerada, caso contrário não será possível enviar o formulário: por exemplo, isso evita que a mensagem seja disparada mesmo que o endereço de e-mail tenha sido corrigido.
Além disso, você não precisa configurar o campo de entrada conforme necessário, pois o 'inválido' será acionado assim que você começar a digitar a entrada.
Aqui está um violino para isso: http://jsfiddle.net/napy84/U4pB7/2/ Espero que ajude!
fonte
Use o atributo "título" em cada tag de entrada e escreva uma mensagem nela
fonte
Só precisa pegar o elemento e usar o método setCustomValidity.
Exemplo
fonte
você pode simplesmente usar o atributo oninvalid = " , com o bingding de this.setCustomValidity () eventListener!
Aqui estão meus códigos de demonstração! (Você pode executá-los para conferir!)
link de referência
http://caniuse.com/#feat=form-validation
https://www.w3.org/TR/html51/sec-forms.html#sec-constraint-validation
fonte
Você pode adicionar este script para mostrar sua própria mensagem.
Para outra validação, como incompatibilidade de padrão, você pode adicionar outra condição adicional
gostar
existem outras condições de validade como rangeOverflow, rangeUnderflow, stepMismatch, typeMismatch, válido
fonte