javascript - 如何限制复选框点击

标签 javascript html arrays checkbox

我想在单击后最多选择两个复选框,它将显示消息。当我不使用数组时,我已经实现了它工作的代码,当我在复选框中使用数组时,它将不起作用。我的代码是:

  <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 建议:

以下是禁用剩余复选框的方法

...没有烦人的警报:

jsFiddle demo

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剩余 复选框标记为已禁用作为 bool 值。

关于javascript - 如何限制复选框点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27054487/

相关文章:

javascript - 拦截表单 POST 字符串并通过 AJAX 发送

javascript - 添加或删除行时使用 jquery 在表中自动计算

html - 根据 div 高度 bootstrap 自动调整面板的高度

html - 无论是否存在滚动条,如何使 tbody 宽度固定?

java - 通过类型转换添加字节,Java

javascript - WKWebView evaluateJavaScript 不适用于 youtube 嵌入式视频网址

javascript - 让WebRTC工作(如何调试ICE失败?)

javascript - 将 jQuery fadeIn() fadeOut 复选框转换为单选按钮

java - 尝试在 remove() 方法中从数组中删除字符串单词时出现 NullPointerException 错误

python - 如何从 numpy 矩阵传递到 numpy 数组?