我想说我很少使用javascript。它从来都不是我的事情,它可能永远都不会,所以我很抱歉我对这种语言缺乏了解。这就是为什么我的问题如此羞辱。
我在网上找到了这个代码:
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 [](name =“weapon []”)而不是(name =“weapon”),作为一个数组,因此js不会识别它。
答案 0 :(得分: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;
}
});
---编辑
刚刚创建了一个jquery插件,用于限制你检查的chekbox的数量。
(function( $ ){
$.fn.LimitCheckableNumber = function( options ) {
var settings = $.extend( {
'nr' : 1,
}, options);
return this.each(function() {
var $this=$(this),
thisName=$this.attr('name');
$this.on('click',function(){
var count=$(":checked[name='"+thisName+"']").length;
if(count>settings.nr){
alert('You can check a maximum of '+settings.nr+' boxes. ');
return false;
};
});
});
};
})( jQuery );
答案 1 :(得分:1)
使用点表示法时,不能使用[]
。切换到像关联数组一样对待它。
checkboxlimit(document.forms.checkform['weapon[]'], 2)
工作得很好。
此外,您无需重新定义checkgroup
和limit
。您可以将它们用作参数。