簡體   English   中英

只允許選中2個復選框

[英]Only allow 2 checkboxes checked

我想說我很少使用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>

對我來說,這看起來很基礎。 這里沒什么特別的。 但是,我的問題是我正在嘗試通過名稱武器[]查找復選框,因為我要輸出多個復選框作為陣列的武器[],所以我需要使用該名稱。 現在我的問題是,我將如何解決這個愚蠢的小錯誤。

總結一下:我的問題是,我的復選框以數組的形式而不是(name =“ weapon”)的名稱被命名為武器[](name =“ weapon []”),因此js無法識別它。

您是否正在尋找這樣的東西?

$(':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插件,僅用於限制您檢查的復選框數量。

(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 );

鏈接

使用點表示法時,不能使用[] 切換為將其視為關聯數組。

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

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

效果很好。

另外,您不需要重新定義checkgrouplimit 您可以將它們用作參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM