0

私はめったに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 []として出力しているため、weapon []という名前でチェックボックスを見つけようとしていることです。今私の質問は、このばかげた小さなエラーでこれをどのように機能させるかです。

要約すると、私の問題は、配列として (name="weapon") ではなく、weapon[] (name="weapon[]") という名前のチェックボックスが付けられているため、js が認識しないことです。

4

2 に答える 2

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 プラグインを作成しました。

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

リンク

于 2013-02-19T21:41:15.627 に答える
1

[]ドット表記を使用する場合は使用できません。連想配列のように扱うように切り替えます。

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

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

正常に動作します。

checkgroupまた、とを再定義する必要はありませんlimit。それらを引数として使用できます。

于 2013-02-19T21:35:35.030 に答える