2012-03-26 8 views
0

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> 
+1

nicht sicher, ob es nur ein Tippfehler, aber in Ihrem Beispiel Sie einen Vergleichsoperator verwenden ('=='), anstatt ein Zuweisungsoperator ('='). – scottm

+0

Enthält das HTML tatsächlich ein Element mit der ID 'mail_not_valid'? Irgendwelche Fehler in der Konsole? –

+0

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

Antwort

2

Sie haben einen Tippfehler ((feld.value)!). Sollte das sein:

if (document.getElementById("mail_not_valid").innerHTML == "that doesn't seem right."){ 
    document.getElementById("mail_not_valid").innerHTML = ""; 
} 

Beachten Sie die einzelnen Gleichheitszeichen.

Kopieren Sie auch nicht den Code. Verwenden Sie anständige Editor/IDE. Kopieren/Einfügen ist böse! :)

+0

ich schon +1, aber ich würde gebe ein anderes, wenn ich könnte für den Copy/Paste-Kommentar! –

+0

@TravisJ: danke :) –

0

Änderung innerHTML == "" zu innerHTML = ""

Verwandte Themen