Ich habe die gleiche ID, nenne zwei HTML-Auswahl. Wenn ich die erste HTML-Auswahl ändere, funktioniert sie ordnungsgemäß. Wenn ich jedoch die zweite HTML-Auswahl ändere, funktioniert sie nicht. Kann jemand darauf hinweisen, was ich hier möglicherweise falsch mache? Danke vielmals. Hier ist mein Code:

<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-Code:

<?php
$fruit=$_REQUEST["name"];
$n = count($fruit);


for($i=0;$i<$n; $i++)
{
    echo $fruit[$i]."<br/>";
}
?>
1
user1493448 9 Okt. 2012 im 01:32

3 Antworten

Beste Antwort

Ihre id sollten eindeutig sein - mit dem ID -Selektor erhalten Sie immer / nur das erste Element, auf das die ID stößt

Sie können verwenden

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

Um beide Ihre Auswahl zu erhalten

3
ᾠῗᵲᄐᶌ 8 Okt. 2012 im 21:34

Das Attribut id ist eindeutig und kann nur zur Auswahl eines Elements verwendet werden. Sobald der erste gefunden ist, wird nicht mehr erwartet, dass er existiert.

Wenn Sie mehrere Elemente gruppieren möchten, verwenden Sie das Attribut class, das mit .classname als Ziel ausgewählt werden kann.

1
Blender 8 Okt. 2012 im 21:35

Das liegt daran, dass die

$("#name")  // id selector

Wählt nur das erste Element mit der ID aus und ignoriert das zweite.

Die ID auf Ihrer Seite sollte eindeutig sein. Versuchen Sie stattdessen, sie durch eine Klasse zu ersetzen, und sie sollte einwandfrei funktionieren.

$(".name") ; // Ändere stattdessen deine id = "name" in class = "name"

1
Sushanth -- 8 Okt. 2012 im 21:34