Ich habe eine Funktion geschrieben, die den innerHTML eines Bereichs mit der ID "mail_not_valid" auf "das scheint nicht richtig" setzt Der Benutzer versucht, eine ungültige E-Mail-Adresse anzugeben. Funktioniert gut. Eine andere Funktion löscht das Eingabefeld und wird von onfocus ausgelöst. Die dritte Funktion wird von onblur ausgelöst und setzt das Eingabefeld auf seinen ursprünglichen Wert zurück, wenn der Benutzer nichts eingegeben hat. Jetzt ist hier das Problem: Wenn der Benutzer auf das Feld klickt (-> gelöscht), eine ungültige E-Mail eingibt (-> span zeigt sich) und dann einfach seinen Eintrag löscht und das Formular verlässt, ist der Bereich noch da.Eine von onblur ausgelöste JavaScript - Funktion gibt eine Warnung aus, ändert aber innerHTML eines Elements nicht
Jetzt, wenn ich document.getElementById ("mail_not_valid") ersetzen. InnerHTML = ""; Bei einer Warnung wird die Warnung angezeigt. Das Ändern von innerHTML funktioniert jedoch nicht.
EDIT: Ich bin ein Idiot, es kann nicht funktionieren, wenn der Benutzer bereits etwas geschrieben: wenn
<input onblur="OnBlurCondition (this, 'subscribe to the e-mail newsletter')">
<script language="javascript">
function OnBlurCondition (feld, inhalt) {
if (!(feld.value)){
feld.value = inhalt;
if (document.getElementById("mail_not_valid").innerHTML == "that doesn't seem right."){
document.getElementById("mail_not_valid").innerHTML = "";
}
}
}
</script>
nicht sicher, ob es nur ein Tippfehler, aber in Ihrem Beispiel Sie einen Vergleichsoperator verwenden ('=='), anstatt ein Zuweisungsoperator ('='). – scottm
Enthält das HTML tatsächlich ein Element mit der ID 'mail_not_valid'? Irgendwelche Fehler in der Konsole? –
haben Sie versucht, alarming oder console.log (document.getElementById ("mail_not_valid"). InnereHTML, um sicherzustellen, dass es gleich ist, was Sie für den Vergleich haben? In diesem Szenario, wenn Sie Whitespace/Zeilenumbrüche usw. wird es den Vergleich werfen es sei denn, sie stimmen genau überein – Brian