读取具有相同名称的三个选择标签的选项

时间:2009-07-14 15:16:35

标签: php javascript html

我如何拥有三个或更多具有相同名称的选择标签(在我的程序中,动态生成选择标签),并独立选择选择的选项。 我有一个循环,我的php读取一个sql表,对于每一行,它创建一个选择标记和一个按钮。

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

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

假设我的sql表中有3行,那么将创建3个带按钮的选择标记。

现在我的问题是如何才能看到哪个选择标签选择了哪个选项?

任何人都可以帮助我。

Zeeshan

4 个答案:

答案 0 :(得分:6)

如果它们具有相同的名称,那么区分它们的唯一方法是使它们的所有值对于特定的选择元素都是唯一的。

如果无法做到,那么你必须给他们不同的名字(例如name="vote[<?php echo $row_id; ?>]")。

此外,PHP的“功能”要求如果您有多个具有相同名称的元素,则名称必须以字符“[]”结尾,以便访问多个提交的值。

答案 1 :(得分:3)

如果表单中的多个元素具有相同的name属性,则它们将成为DOM中的集合(本质上是一个数组)。

所以你可能会选择像这样的

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

您可以像这样访问select元素

document.forms.test.example;

现在,如果您有2个或更多,就像这样

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

您可以在DOM中访问它们

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

修改

哦,在PHP端,它不会识别多个值,除非你在名称中添加[] - 这告诉PHP不要替换相同的键名值,而是将它们用作数组。

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

然后,你会像这样阅读这些值

<?php

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

答案 2 :(得分:0)

如果您需要三个必须包含相同<select>值的单独<option>,那么您需要具有不同的name属性,至少如果您想要保持简单。 如果 - 但是 - 你可以使用一些JS / jQuery,那么你可以为这些id设置三个不同的<select>,并使用AJAX“模拟”不同的名称。像这样:

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

答案 3 :(得分:0)

<script>
function vote(){
    var sIdx=document.getElementById('vote').selectedIndex;
    alert(document.getElementById('vote').options[sIdx].value);
}

</script>