使用Javascript验证选择多个复选框

时间:2013-02-07 09:04:12

标签: php javascript forms checkbox

我正在编写一个表格,可以选择多个复选框并保存到MySQL数据库中。但是,我现在想限制用户可以使用javascript选择的复选框数量,并且遇到了一些麻烦。

似乎导入功能仍然有效,每个复选框都需要具有相同的名称,因此它们可以被识别和内爆,但是为了使Javascript功能起作用,每个名称需要不同,以便它们可以是分化。

任何建议都会感激不尽!

这是我一直在玩的代码。

Javascript功能:

<?php $calc = mysql_query($query) or die(mysql_error()); ?>

<SCRIPT LANGUAGE="javascript">

function KeepCount() 
{
var NewCount = 0

<?php while($count_row = mysql_fetch_array($calc)){
echo "

if (document.import1.checkbox".$count_row['id'].".checked)
{NewCount = NewCount + 1}

";
} ?>

if (NewCount == 6)
{
alert('You can select up to 5 competitors. If you wish to import more you will need to add more judges.')
document.import1; return false;
}
} 
</SCRIPT>

形式:

<form action="import_process.php" method="post" name="import1" id="import1">
<input name="import" type="submit" id="import" value="Import">

<table>
<tr>
<td>&nbsp;</td>
<td>Name</td>
<td>Gender</td>
</tr>

<?php $counter = 1;
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "<tr bgcolor=white>";
echo "<td align=\"center\">
<input name=\"checkbox".$row['id']."\" type=\"checkbox\" id=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount()\"></td>";
}
echo "<td>".$row['name']."</td>";
echo "<td>".$row['gender']."</td>";
echo "</tr>";
$counter++;
}
?>
</table>
</form>

import_process.php:

if(isset($_POST['checkbox'])){
$checkbox = $_POST['checkbox'];
$id = "('" . implode( "','", $checkbox ) . "');" ; 
$sql="
INSERT INTO..."

1 个答案:

答案 0 :(得分:0)

理解你的代码有点困难,但我觉得你对名字的区别感到困惑。每个复选框的ID必须不同,名称必须相同:

<input id=\"checkbox".$row['id']."\" type=\"checkbox\" name=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount()\"></td>";

name-attribute是一个,需要[],所以你得到数组$_POST['checkbox']中的结果。

第二个是,你的函数KeepCount似乎总是检查相同的复选框(或者我真的不明白它是如何工作的)因为无论$count_row['id']是什么,它在页面被解析时设置一次所以javascript功能无法真正计算任何东西。

所以改变复选框创建如下:

<input id=\"checkbox".$row['id']."\" type=\"checkbox\" name=\"checkbox[]\" value=\"".$row['id']."\" onClick=\"return KeepCount(this)\"></td>";

和这样的javascript

var count = 0;    

function KeepCount(it) {
 if (it.checked) {
  count = count + 1;
 } else {
  count = count - 1;
 }
 if (count == 6) {
  alert('You can 
  etc.

这应该有效。

顺便说一下:value = row ['id']似乎也是胡说八道。