2012-05-15 22 views
7

Ich möchte prüfen, ob ein Eingabe-Tag namens "field2" existiert, wenn der Benutzer den Eingabe-Namen "field1" ausfüllt. Ich mache das, indem ich eine JavaScript-Funktion unter Verwendung des onchange Ereignisses auf field1s input Tag ausführe. (Ich teste das mit Hilfe von Alarmfeldern.) Wenn Feld2 nicht existiert, klickt JavaScript auf eine Schaltfläche und das Formular wird aktualisiert, um sowohl field1 als auch field2 zu haben. Aber die Alarmbox erscheint, selbst wenn field2 existiert, egal welche der drei Methoden ich benutze. Ich habe alle möglichen Kombinationen unter Verwendung if mit null und 'undefined', etc.Überprüfen, ob eine Formulareingabe existiert

versucht Warum erscheinen die Alarmfelder, wenn Feld2 existiert?

function foobar(){ 

if(!document.getElementsByName("field2"){ 
alert("foobar"); 
} 

if(!document.forms[0].field2){ 
alert("foobar"); 
} 

if(!document.forms[0].elements.namedItem("field2"){ 
alert("foobar"); 
} 
} 
+0

Bitte erstellen Sie ein http://jsfiddle.net/ mit Ihrem HTML-Code. –

+0

BTW, Ihr Code ist nicht vollständig korrekt, aber ich kann das Verhalten, das Sie sehen, nicht reproduzieren. Wenn 'field2' existiert, wird keine Warnung angezeigt: http://jsfiddle.net/jS7dT/. Sie müssen weitere Informationen geben ... –

Antwort

2

Eigentlich war das Problem, dass die Seite verschiedene Formen und daher forms[0] hatte bezog sich nicht auf die Form ich wollte. Also ich denke, der beste Weg ist, this zu verwenden und direkt auf das Feld input zu verweisen. Es ist auch klarer, mit undefined anstatt ! zu vergleichen.

Dies funktioniert:

function foobar(fooform){ 
    if (fooform.field2 === undefined) { 
     alert("foobar"); 
    } 
} 

wie folgt aufgerufen:

foobar(this.form); 
+0

und es muss fooform.field2 sein, das alte mit (fooform) {if (field2) ...} wird einen Fehler werfen, dass field2 nicht definiert ist. – ppostma1

+0

huckepack auf diesem, 'if (fooform.field2! = Undefined) { alert (" foobar "); } ' für alle anderen, die dies lesen, stellen Sie sicher, dass Sie' fooform.field2.value' nicht verwenden oder auf andere Attribute verweisen, da dies nicht funktioniert. –

6

Sie vermissen eine Klammer: if(!document.getElementsByName("field2"))

+5

Auch auf 'if (! Document.forms [0] .elements.namedItem (" field2 ")' – jmar777

+1

@ jmar777: Richtig, ich habe nicht einmal den Code so weit gelesen;) – Amberlamps

+1

Es dauert ein Dorf ... oder so ähnlich: p – jmar777

0

Gerade da mit getElementsByName zu aktualisieren und zu null zu vergleichen, nicht mehr richtig funktionieren. Was jetzt funktioniert, ist die Länge des Elements zu überprüfen.

if(document.getElementsByName("field2").length<=0) { 
    // then field2 does not exist 
} 
Verwandte Themen