昨日の質問に続いて、以下のコードがある程度正常に機能するようになりました。これにより、最初のフォームアイテムを変更して、バックグラウンドで「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>";