2012-05-25 58 views
1

我試圖獲取具有特定類屬性的選中複選框的列表,並將它們的值傳遞給數組。我想用它來啓用/禁用選擇菜單。到目前爲止,我有以下的,這似乎並沒有爲我工作:jQuery獲取具有特定類的選中複選框的列表

<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')); 
}); 

對不起 - 我只想澄清 - 我想如果要禁用的選擇當檢查至少一個複選框時,將不檢查具有特定類的複選框並刪除禁用屬性。

+0

這個問題的的jsfiddle,總是幫助! http://jsfiddle.net/2Wnv4/和我不清楚這個問題:你想禁用選擇一個特定的複選框時被選中?就像當複選框1被選中時,它被禁用? –

+0

嗨漢斯 - 我已經在主要帖子後面添加了澄清 - 對不起,它不明確。 –

回答

0

試圖改變

var thisObj = $(this); 

var thisObj = $(obj); 

例如小提琴:http://jsfiddle.net/eR7Vs/

+0

謝謝F.卡爾德蘭 - 我完全錯過了那一個! –

相關問題