2011-11-22 8 views
1

J'ai un formulaire où vous pouvez ajouter plusieurs lignes de la même question à un moment donné. version simplifiée ressemble à ceci:Tableau de boutons radio

<input type="text" name="name[]" value=""/> 
<input type="radio" name="opted[]" value="Yes" /> Yes 
<input type="radio" name="opted[]" value="No" /> No 

Au-dessus des lignes sont clonées sur chaque bouton « Ajouter un ami » clic. Cela fonctionne bien pour un champ de texte, car j'obtiens des valeurs de toutes les lignes sur soumettre, mais le bouton radio ne fonctionne pas parce qu'il a le même nom et en cliquant dessus il interfère avec d'autres lignes clonées.

Une idée pour contourner ce problème?

+5

Changement 'name = "a choisi []"' à 'name = "a choisi [123]"' où '123' est un identifiant unique pour votre question. –

+1

@RobW - devrait être une réponse. – Quentin

+0

@RobW Merci, cela a du sens. – arnaslu

Répondre

4

Remplacez name="opted[]" par name="opted[123]", où 123 est un identifiant unique, de sorte que chaque ensemble de réponses soit groupé.

Ensuite, vous pouvez accéder aux éléments de formulaire par l'une des méthodes suivantes:

var method1 = document.getElementsByName("opted[123]"); 
var method2 = document.querySelectorAll("[name='opted[123]']"); 
//Both vanilla-JavaScript methods return a NodeList, consisting of all 
// elements with name="opted[123]"