2009-07-14 5 views
1

Comment puis-je avoir trois balises de sélection au moins portant le même nom (dans mon programme, les balises de sélection sont générées dynamiquement) et sélectionnez indépendamment quelle option a été sélectionnée. J'ai une boucle, où mon php lit une table sql, et pour chaque ligne, il crée une étiquette de sélection et un bouton avec elle.option de lecture de trois balises de sélection portant le même nom

<select name="vote"> 
    <option value="1">1</vote> 
    <option value="2">2</vote> 
    <option value="3">3</vote> 
</select> 

<input type="button" onclick="vote()"> 

suppose que j'ai donc 3 lignes dans ma table sql, donc 3 balises select avec des boutons seraient créés.

Maintenant, ma question est de savoir comment puis-je voir ce que l'étiquette de sélection a quelle option sélectionnée?

Quelqu'un peut-il m'aider avec ceci.

Zeeshan

Répondre

3

Lorsque vous avez plusieurs éléments dans un formulaire avec des attributs name identiques, ils deviennent une collection (essentiellement, un tableau) dans le DOM.

Alors, où vous pourriez avoir une sélection, comme ce

<form name="test"> 
    <select name="example"></select> 
</form> 

Vous accéder à l'élément de sélection comme si

document.forms.test.example; 

Maintenant, si vous aviez 2 ou plus, comme celui-ci

<form name="test"> 
    <select name="example"></select> 
    <select name="example"></select> 
    <select name="example"></select> 
</form> 

Vous auriez accès à eux dans les DOM comme ceci

document.forms.test.example[0]; 
document.forms.test.example[1]; 
document.forms.test.example[2]; 

EDIT

Oh, sur la fin PHP, il ne reconnaît pas plusieurs valeurs sauf si vous ajoutez [] au nom - cela indique PHP de ne pas remplacer les valeurs du même nom clé, mais plutôt de les utiliser comme un tableau.

<form name="test"> 
    <select name="example[]"></select> 
    <select name="example[]"></select> 
    <select name="example[]"></select> 
</form> 

Ensuite, vous liriez ces valeurs comme si

<?php 

$exampleArray = $_GET['example']; 
// you can now loop over $exampleArray or whatever. 
6

Si elles ont le même nom, alors la seule façon de faire la distinction entre eux est d'avoir toutes leurs valeurs soient uniques à un élément de sélection particulier.

Si cela n'est pas possible, vous devez leur donner des noms différents (name="vote[<?php echo $row_id; ?>]" par exemple). En outre, une "caractéristique" de PHP requiert que si vous avez plusieurs éléments avec le même nom, le nom doit se terminer par les caractères "[]" pour que plus d'une des valeurs soumises soit accessible.

0

Si vous avez besoin de trois <select> séparés s qui doivent contenir les mêmes <option> valeurs, vous devez avoir des attributs différents name, au moins si vous voulez garder les choses simples. Si - cependant - vous pouvez utiliser un certain JS/jQuery, alors vous pouvez définir trois différents id à ceux <select> s, et "simuler" différents noms avec AJAX.Quelque chose comme ceci:

var v1 = $("#select1").val(); 
var v2 = $("#select2").val(); 
var v3 = $("#select3").val(); 

$.ajax({ 
    type: "POST", 
    url: "someurl.php", 
    data: "select1="+v1+"&select2="+v2+"&select3="+v3, 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 
0
<script> 
function vote(){ 
    var sIdx=document.getElementById('vote').selectedIndex; 
    alert(document.getElementById('vote').options[sIdx].value); 
} 

</script> 
Questions connexes