Wie kann ich Standardfehlermeldungen zur HTML5-Formularüberprüfung ändern oder entfernen?

142

Zum Beispiel habe ich eine textfield. Das Feld ist obligatorisch, es sind nur Zahlen erforderlich und die Länge des Werts muss 10 sein. Wenn ich versuche, ein Formular mit einem Wert von 5 zu senden, wird die Standardfehlermeldung angezeigt:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. Wie kann ich Standardnachrichten für HTML 5-Formularüberprüfungsfehler ändern?
  2. Wenn der erste Punkt ausgeführt werden kann, gibt es eine Möglichkeit, einige Eigenschaftendateien zu erstellen und in diesen Dateien benutzerdefinierte Fehlermeldungen festzulegen?
Emilan
quelle
1
Ich habe einen Fehler in der Mahoor13-Antwort gefunden, er funktioniert nicht in einer Schleife, daher habe ich ihn behoben und eine Antwort mit einer Korrektur gegeben, die Sie im Antwortbereich finden. Hier ist der Link stackoverflow.com/questions/10361460/…
Darshan Gorasia

Antworten:

213

Ich habe einen Fehler in der Antwort von Ankur gefunden und ihn mit dieser Korrektur behoben:

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

Der Fehler, der auftritt, wenn Sie ungültige Eingabedaten festlegen, dann die Eingabe korrigieren und das Formular senden. Hoppla! das kannst du nicht machen Ich habe es auf Firefox und Chrom getestet

Mahoor13
quelle
18
Ich empfehle, keine Inline-Ereignisse zu verwenden. Es ist keine gute Praxis.
Jared
2
@ Mahoor13 Ich habe es ähnlich geschrieben, aber es wird nie validiert. Können Sie mir einen Hinweis geben? jsfiddle.net/2USxy
Sliq
1
Es gibt auch eine benutzerdefinierte Firefox-Eigenschaft, die Sie hinzufügen können und die gut funktioniert: x-moz-errormessage = "Bitte geben Sie nur Zahlen ein"
coliff
4
Verwenden Sie besser "onkeyup" anstelle von "onchange", um effektiv zu sehen, ob die Eingabe gültig ist oder nicht.
Jam Ville
4
Dies hat das folgende Problem (zumindest in Chrome 55): Wenn die ungültige Nachricht angezeigt wird, wenn der Benutzer den Fokus auf das ungültige Feld behält (ohne zu klicken) und das Feld bearbeitet, wird die Nachricht weiterhin angezeigt - auch wenn das Feld gültig ist notwendig, um entweder zu fokussieren oder Submit auszulösen.
Leonbloy
96

Wenn Sie pattern = verwenden, wird alles angezeigt, was Sie in das title-Attribut eingegeben haben. Es ist also kein JS erforderlich. Führen Sie einfach Folgendes aus:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />
HTF
quelle
9
Sehr schöne Antwort. Aber wie bei allen HTML5-Dingen hängt die Zuverlässigkeit vom Browser ab. Diese Lösung funktionierte hervorragend mit FF 15 und Chrome 22, aber nicht mit Safari 5. (Getestet mit OS X Lion)
james.garriss
1
Gute Antwort, aber seien Sie vorsichtig mit der Abwärtskompatibilität (oder sogar der aktuellen Kompatibilität).
Bohney
7
Wenn ich einen Titel auf "foo" setze, erhalte ich "Bitte stimmen Sie mit dem gewünschten Format überein. Foo", so dass dies für mich nicht funktioniert
Daan
7
Der Titel wird auch als Tooltip-Text für den Mauszeiger verwendet, daher würde ich mich von diesem Ansatz fernhalten.
fotijr
2
Der Titel wird auch als QuickInfo-Text beim Bewegen der Maus verwendet, daher ist dies wahrscheinlich der beste Ansatz.
OdraEncoded
35
<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Plz enter on Alphabets ')" />

Ich habe diesen Code in einem anderen Beitrag gefunden.

Ankur Loriya
quelle
Danke, es hat bei mir funktioniert. Obwohl ich keinen Beitrag, Blog oder keine Website gefunden habe, auf der dies erwähnt wird.
user219628
1
Beachten Sie den folgenden Beitrag, wenn Sie die Verwendung von setCustomValitidy stackoverflow.com/questions/16867407/…
Konstantinos Chertouras
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

Rikin Patel
quelle
14

So verhindern Sie mit jQuery, dass die Browserüberprüfungsnachricht nicht in Ihrem Dokument angezeigt wird:

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

Sie können diese Warnung folgendermaßen entfernen:

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

Setzen Sie die benutzerdefinierte Nachricht einfach auf ein Leerzeichen

user3894381
quelle
5

Mit setCustomValidity können Sie die Standardüberprüfungsnachricht ändern. Hier finden Sie ein einfaches Beispiel für die Verwendung.

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

Ich habe jetzt versehentlich einen Weg gefunden: Sie können diesen verwenden: Datenfehler: ""

<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/>
Mohammad Shojaa
quelle
3

Ich habe einen Fehler in der Mahoor13-Antwort gefunden, er funktioniert nicht in einer Schleife, daher habe ich ihn mit dieser Korrektur behoben:

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

Es läuft perfekt in einer Schleife.

Darshan Gorasia
quelle
2

Wie Sie hier sehen können:

html5 oninvalid funktioniert nicht, nachdem das Eingabefeld korrigiert wurde

Ist gut, dass Sie auf diese Weise setzen, denn wenn Sie den Fehler beheben, verschwinden die Warnmeldungen.

<input type="text" pattern="[a-zA-Z]+"
oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')" />
Jonathan Machado
quelle
2

Verwenden Sie zum Festlegen einer benutzerdefinierten Fehlermeldung für die HTML 5-Validierung Folgendes:

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

und um diese Nachricht zu entfernen, wenn der Benutzer eine gültige Datennutzung eingibt,

onkeyup="setCustomValidity('')"

Hoffe das funktioniert bei dir. Genießen ;)

Umesh Patil
quelle
0

Das ist Arbeit für mich in 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')"
Sahan Pasindu Nirmal
quelle