mysql db にデータを書き込む前に、複数のテキストエリアが空の場合はチェックする必要があります。フォームは動的に生成され、テキストエリアの ID/名前がわかりません。
複数の動的に生成されたテキストエリア、動的に生成された ID と名前を持つフォーム:
<form action=\"$self\" method=\"POST\" id=\"daily_frm\" enctype=\"multipart/form-data\">
<table border=\"1\" cellspacing=\"2\" cellpadding=\"2\" id=\"tb_daily\" class=\"tb_daily\" width=\"100%\">
<tr>
<th scope=\"col\" id=\"col_stn\">Station</th>
<th scope=\"col\" id=\"col_comm\">Comment</th>
<th scope=\"col\" id=\"qcif\">QCIF</th>
<th scope=\"col\" id=\"attach\">Attachment</th>
</tr>";
while ($stn_b = mysql_fetch_array($station_b)){
print "<tr>
<td>$stn_b[station]</td>
<td><textarea id=\"$stn_b[station]_comment\" cols=\"60\" rows=\"5\" value=\"\"></textarea></td>
<td><input type=\"checkbox\" id=\"$stn_b[station]_qcif\" value=\"1\"/></td>
<td><input id=\"$stn_b[station]_attach\" type=\"file\" />
</tr>
";
}
print"
<tr><td colspan=\"4\"><input type=\"submit\" value=\"Submit\" name=\"submit_daily\" id=\"submit_daily\"><input type=\"reset\" name=\"clear_daily\" value=\"Clear\"></td></tr>
</table>
</form>
送信ボタンをクリックしたときにテキストエリアが空かどうかを確認する私のアプローチ:
<script type='application/javascript'>
$(document).ready(function(){
$('#daily_frm').submit( function () {
$('#daily_frm textarea').each(function(){
if ($(this).val()==='') {
alert($(this).attr('id') + ' field is empty');
$(this).focus();
return false;
}
});
});
});
対応するテキストエリア名のアラート ボックスが表示されます。
すべてをdbに書き込む私のphpコード:
if (isset($_POST['submit_daily'])){
while ($stn_b = mysql_fetch_array($station_b)){
$s = $stn_b['station'];
$sid = $stn_b['idtb_station'];
$daily_comment = addslashes($_POST[$s."_comment"]);
if(!empty($_POST[$s."_qcif"])) {
$qcif = $_POST[$s."_qcif"];
echo "$qcif<br />";
} else {
$qcif = "0";
}
$post_daily_sql = "INSERT INTO tb_daily tb_station_idtb_station,date,author,comment,upload) VALUES ('$sid','$today','$user','$daily_comment','$qcif')";
}
}
私の問題は、空のテキストエリアの場合にアラートボックスが表示されることですが、スクリプトはまだデータベースへの書き込みを試み続けています(php/mysql部分が完全ではないことはわかっています)。ヒントはありますか?ありがとう!