我有相同的ID,名称两个html选择。如果我改变第一个html选择然后它正常工作,但如果我改变第二个html选择那么它是行不通的。请有人指出我在这里做错了什么吗?非常感谢。这是我的代码:
<html>
<head>
<title>the title</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#name").change(function(){
$.post(
"data.php",
$("#testform").serialize(),
function(data) {
$('#stage1').html(data);
}
);
var str = $("#testform").serialize();
$("#stage2").text(str);
});
});
</script>
</head>
<body>
<div id="stage1" style="background-color:blue; color: white">
STAGE - 1
</div>
<form id="testform">
<table>
<tr>
<td><p>Fruit:</p></td>
<td>
<select id="name" name="name[]">
<option>Apple</option>
<option>Mango</option>
<option>Orange</option>
<option>Banana</option>
</select>
</td>
</tr>
<tr>
<td><p>Fruit:</p></td>
<td>
<select id="name" name="name[]">
<option>Apple</option>
<option>Mango</option>
<option>Orange</option>
<option>Banana</option>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
Php代码:
<?php
$fruit=$_REQUEST["name"];
$n = count($fruit);
for($i=0;$i<$n; $i++)
{
echo $fruit[$i]."<br/>";
}
?>
答案 0 :(得分:3)
您的id
应该是唯一的 - 使用ID
选择器将始终/只能获得ID带来的第一个元素
您可以使用
$('select[name="name[]"]')
获取您的选择
答案 1 :(得分:1)
那是因为
$("#name") // id selector
只会选择带有id的第一个元素而忽略第二个元素。
您网页上的ID应该是唯一的。请尝试将其替换为类,而且应该可以正常工作..
$(".name") ;
//将您的id =“name”更改为class =“name”而不是
答案 2 :(得分:1)
id
属性是唯一的,只能用于选择一个元素。一旦找到第一个,预计不会存在更多。
如果您想将多个元素组合在一起,请使用class
属性,该属性可以使用.classname
进行定位。
答案 3 :(得分:0)
ID应该是唯一的。原因是,因为javascript只找到遇到“id”的第一个元素。
$('#name')
上面的选择器代码将选择id为“name”的第一个元素。
类用于此目的。 Javascript将创建一个元素数组,遇到“class”。
$('.name')
上面的选择器代码将选择类为“name”的所有元素。这可能是您问题的可能解决方案。也就是说,如果您在两种情况下都更改了两个选择元素中的任何一个,则会触发“更改”事件。