php while ループを使用してテーブルから名前のリストを表示するテーブルがあり、それらの名前のそれぞれの横にチェックボックスがあるため、ユーザーは次のページに並べて表示する 2 つの名前を選択できます。
jquery フォーム バリデーターを使用していますが、次のページに進む前に、選択された名前が 2 つ以下または 2 つ以下の場合にメッセージを表示したいと考えています。検証は、単純な文字列比較などの単純なことにはうまく機能しますが、これを使用することはできません。チェックされているチェックボックスの数を取得しようとしている方法が原因であると思われます。
これがフォーム...
<form method="post" onsubmit="return validation()" action="merge_accounts.php"
name="merge_form" id="merge_form" >
<table>
<?php while ($row = mysqli_fetch_array($sql)){
$account_id = $row['id']; ?>
<tr>
<td><input type="checkbox" id="merge[]" name="merge[]" value="<? echo $row['id']; ?>" style="margin-left:10px" /></td>
<td class="results_cell" style="padding-left:0px">
<a title="<? $row['name']; ?>" href="account_info.php?id=<? echo $account_id; ?>" onClick="this.document.id.submit();"><?
if(strlen($row['name']) > 45){
echo substr($row['name'], 0, 45).'...';
} else {
echo $row['name'];
}?></a>
</td>
</tr>
<tr>
<td colspan="2" class="no_hover">
<input type="submit" class="advanced_buttons"
style="margin: 0px 5px 3px 10px; height:30px; width:60px"
name="merge_submit" value="Merge" />
</td>
</tr>
</table>
</form>
jクエリ...
<script>
function validation()
{
var num = document.forms["merge_form"]["merge"].length;
if(num != 2)
{
$.msgbox("Please select 2 items", {type:"info",
buttons: [
{type: "submit", value: "OK"}
]
});
return false;
}
}
</script>
現時点では、フォームは検証機能を無視し、いくつのチェックボックスがオンになっているかに関係なく送信します