0

昨日の質問に続いて、以下のコードがある程度正常に機能するようになりました。これにより、最初のフォームアイテムを変更して、バックグラウンドで「process.php」に送信し、フィールドを緑色に変えることができます。ただし、トリガーは最初のフォームアイテム(この場合は「cstate」)でのみ機能します。「場所」が変更されてもトリガーされません。clocationを変更してからcstateを変更すると、両方のフォームが正常に送信されるため、clocationが変更されたときに.change関数がトリガーされないだけです。JS(total JS noob)が機能しない理由を理解するのに十分ではないので、助けていただければ幸いです。

ありがとう!

 $sql = "select * from `$table1`";
 $result = mysql_query ($sql) or die(mysql_error());
 while ($row = mysql_fetch_array($result)) 
 { 
   $carid = $row["car_id"]; 
   $carnum = $row["carnum"]; 
   $carlocation = $row["carlocation"];
   $carstate = $row["carstate"];


  $formname = "#form".$carid;

  print '<script type="text/javascript">';
  print "        var cnum;";
  print "        cnum = '$formname',";
  print "        

  $('form').change(function() 
  {
  console.log(cnum);
  $.ajax({ 
  type: 'post',
  url: 'process.php',
  data: $(this).serialize(),
  success: function() {
  }
   });
  return false;
   }); 
  </script>";

   echo "<table>";
   echo "<tr id='$carid'>";
   echo "<td>$carnum</td>";
   echo "<td><form action='' method='post' id='form$carid'>";
   echo "<select id='popup' name='cstate'>";
   echo "<option value='In-Service-Bay'>In Service Bay</option>";
   echo "<option value='Awaiting-Service'>Awaiting Service</option>";
   echo "<option value='Service-Complete'>Service Complete</option>";
   echo "</select></td>";
   echo "<select id='popup' name='clocation'>";
   echo "<option value='Carpark-1'>Carpark-1</option>";
   echo "<option value='Carpark-2'>Carpark-2</option>";
   echo "<option value='Carpark-3'>Carpark-3</option>";
   echo "</select></td>";
   echo "</form></tr>";
  }
  echo "</table>";
4

2 に答える 2

0

コードを使用.on()して内部にラップするdocument.ready.

$(document).ready(function(){
  $('form').on('submit',function() 
  {
     //code here
  });
});

また、このコードをwhileループの外に置きます。また、フォームには変更イベントがありません。使用してみてください.submit()

于 2013-03-19T09:29:56.217 に答える
0

入力選択ごとに個別のフォームを使用して解決しました。今見事に動作します。

助けようとしたすべての人に感謝します。

アダム

于 2013-03-19T10:59:25.143 に答える