2012-10-08 32 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」的所有元素。這可能是您的問題的可能解決方案。也就是說,如果在兩種情況下都更改了兩個選擇元素中的任何一個,則「更改」事件將被觸發。