Jak mogę zmienić lub usunąć domyślne komunikaty o błędach sprawdzania poprawności formularza HTML5?


142

Na przykład mam plik textfield. Pole jest obowiązkowe, wymagane są tylko cyfry, a długość wartości musi wynosić 10. Gdy próbuję przesłać formularz o wartości o długości 5, pojawia się domyślny komunikat o błędzie:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. Jak mogę zmienić domyślne komunikaty błędów walidacji formularza HTML 5?
  2. Jeśli pierwszy punkt można zrobić, czy istnieje sposób na utworzenie plików właściwości i ustawienie w nich niestandardowych komunikatów o błędach?

1
Znalazłem błąd w odpowiedzi Mahoor13, nie działa w pętli, więc naprawiłem go i udzieliłem odpowiedzi z pewną poprawką, którą można znaleźć w sekcji odpowiedzi. Oto link stackoverflow.com/questions/10361460/ ...
Darshan Gorasia

Odpowiedzi:


213

Znalazłem błąd w odpowiedzi Ankur i naprawiłem go za pomocą tej poprawki:

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

Błąd widoczny podczas ustawiania nieprawidłowych danych wejściowych, a następnie poprawiania danych wejściowych i wysyłania formularza. ups! nie możesz tego zrobić. Przetestowałem to na Firefoxie i Chrome


18
Odradzam używanie zdarzeń inline. To nie jest dobra praktyka.
Jared

2
@ Mahoor13 Napisałem to podobnie, ale nigdy nie sprawdza się. Czy możesz mi podpowiedzieć? jsfiddle.net/2USxy
Sliq

1
Istnieje również niestandardowa właściwość Firefoksa, którą możesz dodać, która działa dobrze: x-moz-errormessage = "Wprowadź tylko liczby"
coliff

4
lepiej użyć „onkeyup” zamiast „onchange”, aby skutecznie sprawdzić, czy dane wejściowe są prawidłowe, czy nie.
Jam Ville

4
Ma to następujący problem (przynajmniej w Chrome 55): kiedy pojawia się nieprawidłowa wiadomość, jeśli użytkownik utrzymuje fokus w nieprawidłowym polu (bez klikania) i edytuje pole, komunikat wyskakuje - nawet gdy pole jest prawidłowe - konieczne do skupienia uwagi lub wywołania przesłania.
leonbloy

96

Używając pattern = wyświetli wszystko, co umieścisz w atrybucie tytułu, więc nie jest wymagany JS:

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

9
Bardzo ładna odpowiedź. Ale tak jak w przypadku wszystkich rzeczy związanych z HTML5, niezawodność zależy od przeglądarki. To rozwiązanie działało świetnie z FF 15 i Chrome 22, ale nie z Safari 5. (testowane z OS X Lion)
james.garriss

1
Dobra odpowiedź, ale uważaj na kompatybilność wsteczną (lub nawet bieżącą) tutaj.
bohney

7
Kiedy ustawię tytuł na „foo”, otrzymuję „Proszę dopasować żądany format. Foo”, więc to nie zadziała
Daan

7
Tytuł jest również używany jako tekst podpowiedzi po najechaniu myszą, więc trzymałbym się z daleka od tego podejścia.
fotijr

2
Tytuł jest również używany jako tekst podpowiedzi po najechaniu myszą, więc jest to prawdopodobnie najlepsze podejście.
OdraEncoded


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

Aby zapobiec wyświetlaniu komunikatu weryfikacji przeglądarki w dokumencie, za pomocą jQuery:

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

13

możesz usunąć ten alert, wykonując następujące czynności:

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

po prostu ustaw wiadomość niestandardową na jedno puste miejsce



5

SetCustomValidity pozwala zmienić domyślny komunikat walidacji. Oto prosty przykład jego użycia.

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

3

Przypadkowo znalazłem sposób: możesz użyć tego: błąd danych: „”

<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

Znalazłem błąd w odpowiedzi Mahoor13, nie działa w pętli, więc naprawiłem go za pomocą tej poprawki:

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("");  
    }                 
}  

Będzie doskonale działał w pętli.




2

Aby ustawić niestandardowy komunikat o błędzie na potrzeby walidacji HTML 5,

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

i usunąć tę wiadomość, gdy użytkownik wprowadzi prawidłowe użycie danych,

onkeyup="setCustomValidity('')"

Mam nadzieję, że to działa dla Ciebie. Cieszyć się ;)


0

To działa dla mnie w 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')"

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.