2009-08-25 21 views
2

Ich habe ein Formular, das Benutzer auflistet, und für jeden Benutzer gibt es ein Dropdown-Menü (2 Optionen: warten, fertig) und ein Kommentar-Textfeld. Die Dropdown-Menüs sind jeweils mit "status-userid" beschriftet, und das Kommentar-Textfeld ist mit "comments-userid" bezeichnet. Für den Benutzer 92 sind die Felder in seiner Zeile daher mit status-92 und comments-92 gekennzeichnet.Wie übergebe ich Formularelemente an eine JavaScript-Validierungsfunktion?

Ich muss das Formular auf die folgende Weise validieren: Wenn der Wert des Status "fertig" ist, muss ich sicherstellen, dass der Benutzer Kommentare eingegeben, um mit diesem bestimmten Dropdown-Menü zu entsprechen.

Bisher habe ich:

/* Code */

function validate_form() { 
valid = true; 

    /*here's where i need to loop through all form elements */ 
    if (document.demerits.status-92.value == "finished" && 
     document.demerits.comments-92.value == "") 
    { 
      alert ("Comments are required!"); 
      valid = false; 
    } 

    return valid; 
} 

Wie kann ich eine Schleife durch alle Status-Benutzer-ID-Elemente in Form Array ?! Oder gibt es einen anderen Weg, dies zu tun? Danke für Ihre Hilfe!

Antwort

0

Sie benötigen eine Sammlung der Dropdownlisten in Ihrem Formular. Dies kann unter Verwendung von getElementsByTagName erworben werden.

var dropdowns = document.demerits.getElementsByTagName("select"); 

for (var i = 0; i < dropdowns.length; i++) 
{ 
    // You can now reference the individual dropdown with dropdowns[i] 
} 
+0

Sie würden ein zweites Array für Eingaben benötigen (die hoffentlich alle Textfelder sind). Es wird funktionieren, aber es ist ein bisschen zerbrechlich. – AnthonyWJones

+0

Aye. Deine Methode ist besser. ;-) – Joel

0

Ich glaube, meine Antwort here (und noch genauer here) wird Ihnen helfen.

2

Dies sollte es in Roh-Javascript (kein Framework) tun.

var form = document.demerits; 

for (var i = 1; i <= 100; i++) 
{ 
    if (form["status-" + i.toString()].value == "finished" && 
     form["comments-" + i.toString()].value == "") 
    { 
     // enable visibility of element next to comments indicating validation problem 
     valid = false; 
    } 
} 

Die Verwendung von Warnungen wäre jedoch schlecht.

Verwandte Themen