1

我有相同的 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/>";
}
?>
4

4 回答 4

3

id的 's 应该是唯一的 - 使用ID选择器将始终/仅让您获得它遇到的第一个元素 ID

您可以使用

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

得到你的选择

于 2012-10-08T21:34:14.150 回答
1

那是因为

$("#name")  // id selector

只会选择具有 id 的第一个元素并忽略第二个元素..

您页面上的 ID 应该是唯一的。尝试用类替换它,它应该可以正常工作。

$(".name") ;// 将你的 id="name" 改为 class="name"

于 2012-10-08T21:34:27.520 回答
1

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

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

于 2012-10-08T21:35:08.117 回答
0
  1. ID 应该是唯一的。原因是 javascript 只找到它遇到的第一个带有“id”的元素。

    $('#name')
    

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

  2. 类用于此目的。Javascript 将使用它遇到的“类”创建一个元素数组。

    $('.name')
    

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

于 2012-10-08T23:29:44.067 回答