Como posso alterar ou remover as mensagens de erro padrão da validação de formulário HTML5?


142

Por exemplo, eu tenho um textfield. O campo é obrigatório, apenas números são obrigatórios e o tamanho do valor deve ser 10. Quando tento enviar um formulário com um valor de 5, a mensagem de erro padrão é exibida:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. Como posso alterar as mensagens padrão dos erros de validação de formulário HTML 5?
  2. Se o 1º ponto puder ser concluído, existe uma maneira de criar alguns arquivos de propriedades e definir as mensagens de erro personalizadas nesses arquivos?

1
Eu encontrei um bug na resposta Mahoor13, ele não está funcionando em loop, então eu o corrigi e dou a resposta com alguma correção, que você pode encontrar na seção de respostas. Aqui está o link stackoverflow.com/questions/10361460/…
Darshan Gorasia 15/17

Respostas:


213

Encontrei um erro na resposta Ankur e o corrigi com esta correção:

 <input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity('Plz enter on Alphabets ')"
    onchange="try{setCustomValidity('')}catch(e){}" />

O erro visto quando você define dados de entrada inválidos, corrija a entrada e envie o formulário. oops! você não pode fazer isso. Eu testei no firefox e chrome


18
Sugiro contra o uso de eventos em linha. Não é uma boa prática.
Jared

2
@ Mahoor13 Eu escrevi semelhante, mas nunca valida. Você pode me dar uma dica? jsfiddle.net/2USxy
Sliq

1
Há também um costume Firefox propriedade que você pode adicionar que funciona bem: x-moz-errormessage = "Digite apenas números"
coliff

4
é melhor usar "onkeyup" em vez de "onchange" para verificar efetivamente se a entrada é válida ou não.
21968 Jamie Ville

4
Isso tem o seguinte problema (pelo menos no Chrome 55): quando a mensagem inválida aparece, se o usuário mantém o foco no campo inválido (sem clicar) e edita o campo, a mensagem continua aparecendo - mesmo quando o campo é válido - é necessário se concentrar ou acionar o envio.
leonbloy

96

Ao usar pattern =, ele exibirá o que você colocar no atributo attrib, portanto, nenhum JS necessário apenas faz:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />

9
Resposta muito boa. Mas, como em todo o HTML5, a confiabilidade depende do navegador. Esta solução funcionou muito bem com 15 FF e Chrome 22, mas não com o Safari 5. (testado com OS X Lion)
james.garriss

1
Boa resposta, mas tenha cuidado com a compatibilidade com versões anteriores (ou mesmo atuais) aqui.
bohney

7
Quando eu definir um título de "foo" Eu fico "Por favor coincidir com o formato solicitado foo.", Então isso não vai funcionar para mim
Daan

7
O título também é usado como o texto da dica de ferramenta ao passar o mouse, portanto, eu ficaria longe dessa abordagem.
fotijr

2
O título também é usado como o texto da dica de ferramenta ao passar o mouse, portanto essa é provavelmente a melhor abordagem.
usar o seguinte código


15

HTML:

<input type="text" pattern="[0-9]{10}" oninvalid="InvalidMsg(this);" name="email" oninput="InvalidMsg(this);"  />

JAVASCRIPT:

function InvalidMsg(textbox) {

     if(textbox.validity.patternMismatch){
        textbox.setCustomValidity('please enter 10 numeric value.');
    }    
    else {
        textbox.setCustomValidity('');
    }
    return true;
}

Fiddle Demo


14

Para impedir que a mensagem de validação do navegador apareça no seu documento, com o jQuery:

$('input, select, textarea').on("invalid", function(e) {
    e.preventDefault();
});

13

você pode remover este alerta fazendo o seguinte:

<input type="text" pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity(' ')"
/>

basta definir a mensagem personalizada para um espaço em branco



5

O setCustomValidity permite alterar a mensagem de validação padrão. Aqui está um exemplo simples de como usá-lo.

var age  =  document.getElementById('age');
    age.form.onsubmit = function () {
    age.setCustomValidity("This is not a valid age.");
 };

3

Encontrei uma maneira acidentalmente agora: você pode precisar usar isso: data-error: ""

<input type="username" class="form-control" name="username" value=""
placeholder="the least 4 character"
data-minlength="4" data-minlength-error="the least 4 character"
data-error="This is a custom Errot Text fot patern and fill blank"
max-length="15" pattern="[A-Za-z0-9]{4,}"
title="4~15 character" required/>

3

Eu encontrei um bug na resposta Mahoor13, ele não está funcionando em loop, então eu o corrigi com esta correção:

HTML:

<input type="email" id="eid" name="email_field" oninput="check(this)">

Javascript:

function check(input) {  
    if(input.validity.typeMismatch){  
        input.setCustomValidity("Dude '" + input.value + "' is not a valid email. Enter something nice!!");  
    }  
    else {  
        input.setCustomValidity("");  
    }                 
}  

Ele funcionará perfeitamente em loop.




2

Para definir uma mensagem de erro personalizada para validação em HTML 5,

oninvalid="this.setCustomValidity('Your custom message goes here.')"

e para remover esta mensagem quando o usuário digitar o uso de dados válidos,

onkeyup="setCustomValidity('')"

Espero que funcione para voce. Aproveitar ;)


0

Isso é trabalho para mim no Chrome

    <input type="text" name="product_title" class="form-control" 
required placeholder="Product Name" value="" pattern="([A-z0-9À-ž\s]){2,}"
oninvalid="setCustomValidity('Please enter on Producut Name at least 2 characters long')"

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.