0

我正在编写一个表单,可以选择多个复选框并将其保存到 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..."
4

1 回答 1

0

理解您的代码有点困难,但我认为您对名称和 ID 的差异感到困惑。每个复选框中的 ID 必须不同,名称必须相同:

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

name-attribute 是唯一的,它需要 [],因此您可以在 array 中获得结果$_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'] 似乎也是胡说八道。

于 2013-02-07T09:32:15.397 回答