复选框单击的限制
how limit on checkbox click
我想选中最多两个复选框,然后单击后它将显示消息。我实现了代码,当我不使用数组时,它在复选框中使用数组时它不会 work.my 代码是:
<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>
<form name=form1 method=post action=check.php>
<table width=''250''align=center>
<tr bgcolor=''#f1f1f1'' ><td >
<input type=checkbox name=ckb value=1 onclick='chkcontrol(0)';></td><td >PHP</td></tr>
<tr bgcolor=''#ffffff'' ><td >
<input type=checkbox name=ckb value=2 onclick='chkcontrol(1)';></td><td >Perl</td></tr>
<tr bgcolor=''#f1f1f1'' ><td >
<input type=checkbox name=ckb value=3 onclick='chkcontrol(2)';></td><td >MySQL</td></tr>
<tr bgcolor=''#ffffff'' ><td >
<input type=checkbox name=ckb value=4 onclick='chkcontrol(3)';></td><td >ASP</td></tr>
<tr bgcolor=''#f1f1f1'' ><td >
<input type=checkbox name=ckb value=5 onclick='chkcontrol(4)';>
</td><td >JavaScript</td></tr>
</table>
</form>
上面的代码正在工作,但是当我使用
<input type=checkbox name=ckb[] value=4 onclick='chkcontrol(3)';></td><td >ASP</td></tr>
它不起作用
I would like to store multiple value in array of php
<?php
print_r($_POST['ckb']);
?>
jsFiddle demo
P.S,不要使用内联JS(它几乎不可维护;尽量保持JS紧凑);像这样:
<input type=checkbox name=ckb[] value=1>
比JS将是:
var formCkb = document.form1["ckb[]"];
for(var i=0; i<formCkb.length; i++){
formCkb[i].addEventListener("change", chkcontrol, false);
}
function chkcontrol() {
var tot = 0;
for(var i=0; i<formCkb.length; i++) tot += formCkb[i].checked;
if(tot > 3){
alert("Please Select only three");
return this.checked = false ;
}
}
遵循@PacMan惊人的 UI 建议:
以下是禁用其余复选框的方法
。没有烦人的警报:
js小提琴演示
var formCkb = document.form1["ckb[]"];
for (var i=0; i<formCkb.length; i++) {
formCkb[i].addEventListener("change", chkcontrol, false);
}
function chkcontrol() {
var tot=0, notChkd=[];
for (var i=0; i<formCkb.length; i++) {
if (formCkb[i].checked) tot += 1;
else notChkd.push( formCkb[i] );
}
for(var i=0; i<notChkd.length; i++) notChkd[i].disabled = tot>=3;
}
上面notChkd
数组用于存储所有其他未经检查的元素。tot
计数器退出循环后,可以使用tot>=3
作为布尔值将其余复选框标记为disabled
。
也许你可以试试这个:
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;
}
}
}
你可以采用一个更清晰的实现,比如
<input type = checkbox name = 'ckb' value = 1 onclick = 'chkcontrol(this)'>
function chkcontrol(obj) {
var checkedLen = 0, checkBoxes = document.getElementsByName(obj.name);
for(var i = 0; i < checkBoxes.length; i++) {
if(checkBoxes[i].checked) {
checkedLen++;
}
if(checkedLen > 3) {
alert("Please Select only three") ;
obj.checked = false;
return;
}
}
}
很抱歉我只知道C。但一定有一种东西叫做计时器。它将继续运行您希望它运行的代码。您可以保留选中的复选框的签入号
相关文章:
- 如何在单击复选框后调用控制器方法
- 在GridView中,当单击复选框时,在网格的同一行中使用JavaScript将标签中的值添加到TextBox
- 在网页中单击复选框
- 单击复选框时显示日期选择器
- 选择全部单击复选框以及全部拒绝
- 在 Telerik RadGrid 中单击复选框时打开对话框窗口
- 在JS中单击复选框时显示总价
- 单击复选框时重定向
- 如何在单击复选框按钮时制作单选按钮
- 如何使用角度指令控制器动态单击复选框
- 如何通过单击复选框来显示或隐藏网络图表
- 单击复选框时的角度显示一个元素
- 复选框不能通过直接单击复选框来选中或取消选中
- 单击复选框时将此元素添加到收藏夹数组 + 后 Ajax 元素关系
- 单击复选框后未收到复选框事件
- 单击复选框时汇总隐藏字段的值不起作用
- 如何使文本输入框在单击复选框时变为不可写
- 如何在 JSP 中的“单击”复选框时创建删除按钮
- 如何通过单击复选框将文本元素从输入复制到另一个输入
- 单击复选框时如何在 jquery 中创建数组