2010-05-03 124 views
0

我试图限制可以检查的复选框的数量,在这种情况下,只有3可以检查。当使用纯HTML时,这工作正常。代码可以在下面看到。PHP/JavaScript的限制量的复选框

HTML示例

<td ><input type=checkbox name=ckb value=2 onclick='chkcontrol()';></td><td>Perl</td> 

Javascript函数

<script type="text/javascript"> 
function chkcontrol(j) { 
var total=0; 
for(var i=0; i < document.form1.ckb.length; i++){ 
if(document.form1.ckb[i].checked){ 
total =total +1;} 
if(total > 3){ 
alert("Please Select only three")  
document.form1.ckb[j].checked = false; 
return false; 
} 
}  
} 
</script> 

从MySQL数据库与值替换固定值HTML时,出现问题。所有信息均正确显示,并可通过提交按钮发布到其他页面。但是,似乎分配给数据库中每条记录的'值'并不是javascript函数的方式。

<td><input name="checkbox[]" type="checkbox" value="<?php echo $rows['TCA_QID'];?>" onclick="chkcontrol();"></td> 

我试图在javascript函数来匹配“复选框” name.Any的建议是改了名字不胜感激

感谢

+1

你的函数声明有一个参数:它在你的函数调用中缺少。 您是否尝试显示生成的源代码? – Rodolphe 2010-05-03 15:44:23

+0

我只是恨痛苦的代码.......不计算。 – 2010-05-03 15:47:06

回答

0

在第二个版本,你input元素的name是“checkbox []”,但在你的JavaScript函数中,你正在寻找一个nameckb。如果您要求它查找错误的名称,JavaScript函数无法找到您的字段。

你说你试过改变这个。当你尝试时发生了什么?确保你命名元素“ckb”,而不是“ckb []”。

你看过了页面生成的HTML中的复选框的值吗?它们与你期望的相符吗?

+0

谢谢你的回复, 对不起,我没有做出更清楚的,没有想要更多的代码查克。 我将其更改为复选框,但当超过3个复选框发出警报时,不会显示警报。然后我改变了它的复选框[],但它再次没有区别。 是的值完全出自他们应该的。我拿出了大部分函数来确保onclick正在工作,并且有一个简单的警报工作 - 所以即时猜测'total'变量在单击复选框时不会递增 – Carl294 2010-05-03 15:53:11

+0

您的JavaScript代码引用'document.form1.ckb [i ]'。因此,您的'输入'元素需要名称为'ckb',而不是'checkbox',而不是'checkbox []'。 – Syntactic 2010-05-03 17:04:10

0
<script type="text/javascript"> 
<!-- 
//initial checkCount of zero 
var checkCount=0 

//maximum number of allowed checked boxes 
var maxChecks=3 

function setChecks(obj){ 
//increment/decrement checkCount 
if(obj.checked){ 
checkCount=checkCount+1 
}else{ 
checkCount=checkCount-1 
} 
//if they checked a 4th box, uncheck the box, then decrement checkcount and pop alert 
if (checkCount>maxChecks){ 
obj.checked=false 
checkCount=checkCount-1 
alert('you may only choose up to '+maxChecks+' options') 
} 
} 
//--> 
</script> 

</head> 

<body> 
<form> 
Option1 <input type="checkbox" id="check1" onclick="setChecks(this)"><br /> 
Option2 <input type="checkbox" id="check2" onclick="setChecks(this)"><br /> 
Option3 <input type="checkbox" id="check3" onclick="setChecks(this)"><br /> 
Option4 <input type="checkbox" id="check4" onclick="setChecks(this)"><br /> 
Option5 <input type="checkbox" id="check5" onclick="setChecks(this)"><br /> 
Option6 <input type="checkbox" id="check6" onclick="setChecks(this)"><br /> 

</form> 
</body>