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?

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


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" />

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


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

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

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



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

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/>

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.




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 ;)


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')"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.