1

特定のクラス属性でチェックされたチェックボックスのリストを取得し、それらの値を配列に入れようとしています。選択メニューを有効/無効にするために使用したい。これまでのところ、次のようなものがありますが、うまくいかないようです:

<select name="inboxSelect" id="inboxSelect" class="selectDisabledSwitch" data-trigger="selectTrigger" disabled="disabled">
    <option value="">With selected</option>
    <option value="1">Archive</option>
    <option value="2">Mark as completed</option>
</select>


<input type="checkbox" name="inbox-1" id="inbox-1" value="1" class="selectTrigger" />
<input type="checkbox" name="inbox-2" id="inbox-2" value="2" class="selectTrigger" />
<input type="checkbox" name="inbox-3" id="inbox-3" value="3" class="selectTrigger" />

およびjavascript / jquery:

var frontObject = {
    getCheckboxCheckedArray : function(objClass) {
        var thisArray = $('input:checkbox:checked.' + objClass).map(function () {
            return this.value;
        }).get();
        return thisArray;
    },
    selectDisabledSwitch : function(obj) {
        if (obj.length > 0) {
            var thisObj = $(this);
            var thisTrigger = thisObj.attr('data-trigger'); 
            var thisValues = frontObject.getCheckboxCheckedArray(thisTrigger);
            frontObject.disableMenu(thisObj, thisValues);
            $('.' + thisTrigger).live('change', function() {
                var thisValues = frontObject.getCheckboxCheckedArray(thisTrigger);
                frontObject.disableMenu(thisObj, thisValues);
            });
        }
    },
    disableMenu : function(thisObj, thisValues) {
        if (thisValues.length > 0) {
            thisObj.attr('disabled', false);
        } else {
            thisObj.attr('disabled', 'disabled');
        }
    }
};
$(function() {
    frontObject.selectDisabledSwitch($('.selectDisabledSwitch'));
});

申し訳ありません-明確にするために-特定のクラスのチェックボックスがどれもチェックされていない場合は選択を無効にし、少なくとも1つがチェックされている場合は無効な属性を削除します。

4

1 に答える 1

0

変更してみてください

var thisObj = $(this);

var thisObj = $(obj);

フィドルの例:http://jsfiddle.net/eR7Vs/

于 2012-05-25T13:44:44.253 に答える