2010-03-24 4 views
2

Si un formulaire porte la même étiquette de manière répétée.Itération à travers les mêmes éléments de formulaire

Comment obtenir sa valeur en javascript.

<script> 
    function validate() 
     { 
     //get all values of elmone 
     } 
    </script> 


<form> 
<input type="text" size="15" value="Hello World" name="elmOne"> 
<input type="text" size="15" value="next Hello World" name="elmOne"> 
<input type="button" onclick="javascript:validate()" value="validate"> 
</form> 

Merci ..

Répondre

2

Il n'est pas courant de nommer deux éléments d'entrée de texte différents avec un nom commun. Cependant, revenons à la question, vous pouvez toujours utiliser document.getElementByName ('elmOne'); pour obtenir une liste de l'entrée correspondante, puis boucle à travers elle pour la valeur

var input_list = document.getElementsByName('elmOne'); 

for(var i = 0; i < input_list.length; i++) { 
    // either way should get you the value 
    console.debug(input_list[i].value, input_list[i].getAttribute('value')); 
} 

vous pouvez vous référer à cette page pour de plus amples informations sur la compatibilité

+0

Merci, mais si j'ai 2 valeurs comment est-ce que je reçois 4 valeurs et les deux derniers sont indéfinis: alerte (liste_entrée [i]) – Hulk

+0

oups, devrait utiliser propre pour la boucle, fixe. J'ai oublié qu'un tableau contient d'autres attributs au lieu d'un simple index numérique – Jeffrey04

0

var elem = document.form.all.namedItem("elmOne") retournera ensemble d'éléments requis. Ensuite, il suffit itérer et obtenir des valeurs en utilisant elem.value

+0

En mode IE8, la méthode namedItem ne renvoie pas les collections si plusieurs éléments nommés sont trouvés; à la place, il renvoie le premier élément correspondant insensible à la casse. Pour plus d'informations sur le mode IE8, voir Définition de la compatibilité des documents. –

+0

lien: http://msdn.microsoft.com/en-us/library/ms536634(VS.85).aspx –

+0

Si vous utilisez IE8 et plus tard, essayez d'utiliser document.forms [0].elements ("elemOne") – Artic

0
var items = document.getElementsByName("elmOne"); 
for (var i = 0; i < items.length; i++) { 
    var item = items[i]; 
} 

Cependant, cela va avoir un comportement inattendu dans IE. Pour plus de détails, voir this question. L'idée de base est que l'implémentation de Microsoft de cette fonction est différente des implémentations d'autres navigateurs. Par conséquent, vous pouvez obtenir des résultats contradictoires à travers les navigateurs.

La solution est de trouver une manière différente d'associer ces éléments et de les utiliser pour saisir quels éléments vous voulez.

1

vous pouvez utiliser les document.forms propriété à obtenir un tableau de formulaires de document, à partir de l'index 0 pour le premier élément de formulaire est apparu dans le code HTML, et ainsi de suite. ou vous pouvez accéder à un formulaire ayant un attribut "name", en utilisant le nom comme index de tableau. afin d'accéder à la première forme dans l'utilisation de code HTML:

var f = document.forms[0]; 

et si la forme a le nom comme « loginForm », vous pouvez l'atteindre comme:

var f = document.forms['loginForm']; 

maintenant que vous avez une référence Dans le formulaire, vous pouvez accéder aux éléments à l'aide de la propriété .elements du formulaire. cette propriété est un tableau qui a les mêmes propriétés d'indexation que le document.forms. Ainsi, vous pouvez accéder à chacun des éléments par leur ordre dans le code HTML en utilisant des index numériques, 0 pour le premier, ou utiliser des index nommés en plaçant l'attribut name de chaque élément comme index.

pour ainsi accéder au deuxième élément sous la forme que vous pouvez utiliser:

var el = f.elements[1]; 

ou si l'élément a l'attribut nom de « nom d'utilisateur », vous pouvez référencer par:

var el = f.elements["username"]; 

De cette façon, vous pouvez faire référence à n'importe quel élément de n'importe quelle forme dans votre document. Sur le site Web MSDN: Internet Explorer 8 et versions ultérieures.

Questions connexes