So zeigen Sie mehrere Fehlermeldungen auf der gleichen Seite mit JavaScript
Ich bin das arbeiten auf java-script und ich bin fest auf eine phase. In meinem Projekt habe ich so überprüfen Sie alle Felder, wenn das Formular abgeschickt wird und die Anzeige Fehlermeldung auf der gleichen Seite in der Bestell-Liste oben im Formular Feld. Balg ist mein code
function validation(){
var errorMsg=new Array();
//var errorMsg = "";
if(document.getElementById("fullname").value = " "){
errorMsg[0] = "Please Enter Full Name\n"
}
if(document.getElementById("street").value = " "){
errorMsg[1]= "Please Enter Street Name\n"
}
if(document.getElementById("postcode").value = " "){
errorMsg[2]= "Please Enter Postlecode\n"
}
if(document.getElementById("phone").value = " "){
errorMsg[3]= "Please Enter Phone Number\n"
}
if(document.getElementById("email").value = " "){
errorMsg[4]= "Please Enter Email Id\n"
}
if(errorMsg!=" "){
var r =" ";
for(var i=0;i<=errorMsg.length-1;i++){
document.getElementById("error").innerHTML="<li>"+errorMsg[i]+"</li>"
}
return false;
}
}
</script>
wenn ich diesen code ausführen, gibt es mir nur letzten Wert
kann jemand mir helfen, wie display-Fehlermeldung auf der Oberseite der form?
- Können Sie Ihre HTML-Teil, das wird hilfreich sein um das problem zu lösen
for (...) { innerHTML = errorMsg[i]; }
ಠ_ಠ- Tipp : verwenden Sie den Gleichheitsoperator (
==
) statt der Zuordnung(=
) inif
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast hier einen Fehler:
Müssen Sie Anhängen
errorMsg
nicht zuordnen kann. Zum Beispiel so:Wenn Sie möchten, um die Anzeige der Fehlermeldung am oberen Rand der Seite, erstellen Sie div, wo Sie wollen, geben Sie diesem div-Element die id und das setzen von innerHtml, um dieses div:
Auch Sie könnte verbessern Sie Ihre Validierung und die Validierung der Felder, wenn ein Benutzer Text eingibt, nicht, nachdem er übermittelt alle Informationen.
Und durch die Art und Weise, die Sie hinzufügen, Fehler in tag -
<li>
. Also, Sie wissen, Sie sollten auch hinzufügen<ol>
oder<ul>
um eine Liste?Schrieb ich deinen code ein wenig. Hier ist was ich geändert habe:
" "
habe ich die!
Betreiber.push
auf dem array anstelle von Anhängen, die durch den index. Dies bedeutet, dass es keine leeren Plätze im array.push
fügt ein element am Ende des Arrays, unabhängig von der index.forEach
- Schleife auf das array. Dies geht durch alle aufzählbare Elemente, unabhängig davon, wie viele es sind.So, in dem Beispiel:
JS
Sehen diese Geige: http://jsfiddle.net/M48gA/
errorMsg.forEach
durchläuft jedes element in der errorMsg array. Die anonyme Funktion, die definiert wird als parameter anforEach
ausgeführt wird auf jedes element im array. Dieser code ist robuster als das, was Sie geschrieben, weil Sie füllt das array dynamisch statt mit Indizes, und dann in einer Schleife durch die Elemente in das array wieder, nicht mit Indizes.Müssen Sie Anhängen jeden Fehler der bestehenden
.innerHTML
anstatt überschreiben Sie die vorhandenen:Aber überspringen Sie die Schleife ganz verzichten und nur dazu:
(Die
.join()
Methode setzt alle Elemente des Arrays in einen string, getrennt durch den angegebenen text.)Auch, wenn nur einige Voraussetzungen erfüllt werden, Ihr array undefined (fehlenden) Elemente, da Sie explizit festlegen bestimmter Indizes, das heißt, Sie werden hinzufügen
<li>
Elemente mit "undefined" angezeigt, in Ihnen. Sie sollten dies tun, statt:...entweder wird an das Ende des Arrays. Dann testen ob es irgendwelche Fehler haben:
Auch die Bedingungen in wenn-Anweisungen sind alle Aufgaben, denn Sie verwenden
=
wo Sie verwenden sollten===
(oder==
), und Sie testen, ob jedes Feld enthält ein einzelnes Leerzeichen:" "
wo ich denke, dass Sie möchten, um zu testen, ob jedes Feld leer ist, wird durch den Vergleich mit einem leeren string:""
.Verwenden Sie
===
oder==
statt=
imif
- Anweisung.Weil innerHtml der "error" wird immer ersetzt.Also nur der Letzte Wert zeigte.
Versuchen Sie folgenden link
Ist es möglich, Anhängen, um innerHTML zu zerstören, ohne Nachkommen' Ereignis-Listener?
=
ist der Zuweisungsoperator. In Ihremif
- Anweisungen verwenden, müssen Sie gleich==
oder genau gleich===
(Prüfungen Typ auch).Müssen Sie auch das hinzufügen, um bestehende Betreiber
+=
in Ihrer Erklärung Auflistung:Ich denke, man kann einfach versuchen Sie, die Fehlermeldung zu label in jedem Fall.
Einfügen in ein array setzen "undefined" Wert in einem array. e.g Wenn Sie gültig fullname dann gibt es nicht etwas bei errorMsg[0].Wenn Sie ungültige Straße, errorMsg[1] ein Eintrag "Bitte Geben Sie Straße Name\n".
Nun,wenn Sie das Formular senden, sagen Sie mit submit-button, erhalten Sie die Fehlermeldung für ungültige Straße, aber erhalten "undefined" für die erste Stelle des array.