如果选中了3个以上的复选框,如何取消选中复选框

时间:2012-12-06 17:42:27

标签: javascript checkbox alert

我有这样的表格:

<form name ='vote' action='' method='POST'>
    while ($row = mysql_fetch_array($result)){
       <input type='checkbox' name='things[]' value='".$row['name_song']."'
              name='send' onClick='anyCheck(this.form)'>
    } 
    <input type='submit' value='test' name='send'></form>

我必须做些什么才能让人们投票的最长时间( t )为整数?我希望将值传递给anyCheck函数,例如$ maxvotes。

<script type="text/javascript"> 
   function anyCheck(f, e) {
      e = e || window.event;
      var t = 0;
      var c = f['things[]'];
      for (var i = 0; i < c.length; i++) {
         c[i].checked ? t++ : null;
      }
      if (t == 3) {
         alert("Daugiausiai galite balsuoti už triks kūrinius")
         var targ = event.target || event.srcElement;
         targ.checked = false;
      }
   }
</script>

2 个答案:

答案 0 :(得分:1)

由于从事件处理程序调用{​​{1}},将anyCheck对象传递给event函数,获取事件的目标,并将其anyCheck()属性设置为.checked

false

<input ...  onClick='anyCheck(this.form, event)'>

或者由于处理程序是直接绑定的,因此您可以改为function anyCheck(f, e) { var t = 0; var c = f['things[]']; for (var i = 0; i < c.length; i++) { c[i].checked ? t++ : null; } if (t == 3) { alert("You can choose a maximum of 2" + name + "haha"); (event.target || event.srcElement).checked = false; } }

this

<input ...  onClick='anyCheck(this)'>

答案 1 :(得分:0)

此解决方案需要jQuery,尽管您可以将其重新设计为不需要jQuery选择器:

<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">

<script type="text/javascript">
  $(document).on("click", "input[type=checkbox]", function(e) {
    var num_checked = $("input[type=checkbox]:checked").length;
    if (num_checked > 3) {
      alert("sorry, you have already selected 3 checkboxes!");        
      $(e.target).prop('checked', false);
    }
  });
</script>
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

作为一个jsfiddle:http://jsfiddle.net/RF5Ls/