2012-10-08 40 views
1

我有相同的id,名称两个html选择。如果我改变第一个HTML选择,那么它的工作正常,但如果我改变第二个HTML选择,那么这是行不通的。请有人指出我在这里可能做错了什么?非常感谢。这里是我的代码:jquery更改功能不能正常工作

<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/>"; 
} 
?> 

回答

3

id的应该是唯一的 - 使用ID选择永远/只会让你也遇到与ID的第一个元素

您可以使用

$('select[name="name[]"]') 

让你都选择

1

这是因为

$("#name") // id selector 

将只选择与该ID的第一要素,而忽略第二个..

在网页上,ID应该是唯一的..尝试用它替换类,而不是它应该很好地工作..

$(".name") ; //改变你的ID =“名称”类=“名”,而不是

1

id属性是唯一的,只能用于选择一个元素。一旦找到第一个,预计不会再存在。

如果要将多个元素组合在一起,请使用class属性,该属性可以使用.classname作为目标。

0
  1. ID应该是唯一的。原因是,因为JavaScript只发现了遇到的“id”的第一个元素。

    $('#name') 
    

    上面的选择器代码将选择id为“name”的第一个元素。

  2. 类用于此目的。 Javascript会创建一个数组,其中包含遇到的“class”。

    $('.name') 
    

    上面的选择器代码将选择类名为“name”的所有元素。这可能是您的问题的可能解决方案。也就是说,如果在两种情况下都更改了两个选择元素中的任何一个,则“更改”事件将被触发。