2013-02-19 144 views
0

我想说我很少使用JavaScript。这从来不是我的事,也可能永远不会,所以我很抱歉我对这门语言缺乏认识。这就是为什么我的问题如此耻辱。只允许检查2个复选框

我发现这个代码在网上:

function checkboxlimit(checkgroup, limit){ 
    var checkgroup=checkgroup 
    var limit=limit 
    for (var i=0; i<checkgroup.length; i++){ 
     checkgroup[i].onclick=function(){ 
     var checkedcount=0 
     for (var i=0; i<checkgroup.length; i++) 
      checkedcount+=(checkgroup[i].checked)? 1 : 0 
     if (checkedcount>limit){ 
      alert("You can check a maximum of "+limit+" boxes.") 
      this.checked=false 
      } 
     } 
    } 
} 

<script type="text/javascript"> 
    checkboxlimit(document.forms.checkform.weapon[], 2) 
</script> 

它看起来非常基本的给我。这里没什么特别的。 但是,我的问题是,我试图通过名称weapon []找到复选框,我需要输出多个复选框作为数组的武器[]。 现在我的问题是,我将如何使这个愚蠢的小错误的工作。

总结: 我的问题是我的复选框被命名为weapon [](name =“weapon []”)而不是(name =“weapon”),因此js不会识别它。

+2

哪里jQuery的? – Blender 2013-02-19 21:28:45

+0

编辑过! sry – Mathias 2013-02-19 21:30:38

+0

那么你的问题是什么,你想达到什么目的?如果我没有弄错,你想确保在 – Dynamikus 2013-02-19 21:34:13

回答

1

使用点符号时,不能使用[]。切换到像关联数组一样处理它。

checkboxlimit(document.forms.checkform['weapon[]'], 2) 

http://jsfiddle.net/4mYbD/3/

作品就好了。

此外,您不需要重新定义checkgrouplimit。你可以用它们作为参数。

+0

http://jsfiddle.net/4mYbD/1/ 不,它不 - 我的复选框的名称是武器[],因为我在数组中使用它们。 – Mathias 2013-02-19 21:38:01

+0

现在更新了,我用'name =“武器[]”'看到你的html“'' – idrumgood 2013-02-19 21:41:07

+0

非常感谢=)这就是我正在寻找的 – Mathias 2013-02-19 21:48:48

2

你在找这样的事吗?

$(':checkbox[name=weapon]').on('click',function(){ 

    var checkedBoxlength=$(':checkbox[name=weapon]:checked').length; 
    if(checkedBoxlength>2){ 
     alert('You can check a maximum of 2 boxes.'); 
     return false; 
    } 
}); 

http://jsfiddle.net/umqL3/2/

---编辑

刚刚作出了一个jQuery插件只是限制你多少chekboxes检查。

Link

+0

你可以使它像通用一样。 – Dynamikus 2013-02-19 21:41:50

+0

1)你不能只是添加jQuery,并假设没关系。 2)您已经取消了定义多少复选框可用的功能 3)您已经取消了定义哪些复选框受到影响的功能。 – idrumgood 2013-02-19 21:49:26

+0

我正在为此编写一个插件。等几分钟。我知道它不是通用的。 – Dynamikus 2013-02-19 21:50:17

相关问题