2009-08-25 7 views
2

J'ai un formulaire qui répertorie les utilisateurs, et pour chaque utilisateur il y a un menu déroulant (2 choix: en attente, fini) et une zone de texte de commentaires. Les menus déroulants sont chacun étiquetés "status-userid" et la zone de texte des commentaires est étiquetée "comments-userid" ... donc pour l'utilisateur 92, les champs de sa rangée sont étiquetés status-92 et comments-92.Comment transmettre des éléments de formulaire à une fonction de validation javascript?

Je dois valider le formulaire de la manière suivante: Si la valeur de l'état est "terminée", je dois m'assurer que l'utilisateur a entré des commentaires pour correspondre à ce menu déroulant spécifique.

Jusqu'à présent, j'ai:

/* 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; 
} 

Comment puis-je boucle à travers tous les éléments d'état-userid dans le tableau de forme ?! Ou est-ce qu'il y a un autre moyen de le faire? Merci de votre aide!

Répondre

0

Vous aurez besoin d'une collection des listes déroulantes dans votre formulaire. Cela peut être acquis en utilisant getElementsByTagName.

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

Vous auriez besoin d'un deuxième tableau pour les entrées (qui, espérons-le, sont toutes des zones de texte). Ça va marcher mais c'est un peu fragile. – AnthonyWJones

+0

Aye. Vous êtes la méthode, c'est mieux. ;-) – Joel

0

Je crois que ma réponse here (et encore plus de détails here) vous aidera.

2

Cela devrait le faire en Javascript brut (sans cadre).

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; 
    } 
} 

L'utilisation d'alertes serait cependant mauvaise.

Questions connexes