2012-03-06 3 views
1

Я использую jquery с элементом dropdownchecklist. это мой код для выбора конфигурации.jQuery limit "Dropdown Check List" выбирает

jQuery('#selectbox').dropdownchecklist({ width: 120, maxDropHeight: 100, firstItemChecksAll: false, emptyText: 'Select' }); 

Я хочу ограничить выбор только двумя выборами. Если пользователь выбирает 2 варианта, все остальные элементы будут отключены для выбора. Как я могу это сделать?

Update: Я нашел самый простой способ сделать это

function Selectbox_limit(jidList) { 
    var jids = ''; 
    var counter = 0; 
for(var i=0; i<jidList.options.length; i++) { 
    if(jidList.options[i].selected == true) 
     counter++; 

    if(counter >= 2) { 
     jidList.options[i-1].selected = false; 
        jQuery("#selectbox").dropdownchecklist("destroy"); 
        jQuery("#selectbox option").attr('disabled','disabled'); 
        jQuery("#selectbox option:selected").attr("disabled",""); 
        jQuery('#selectbox').dropdownchecklist({ _propeties_ }); 
     return; 
    } else if(counter < 2) { 

       jQuery("#selectbox").dropdownchecklist("destroy"); 
       jQuery("#selectbox option").attr("disabled",""); 
       jQuery('#selectbox').dropdownchecklist({ _propeties_ }); 
     return; 
    } 
} 

ответ

0

dropdownchecklist добавить класс активного к флажков, так что вы можете использовать его как это:

$('.active').change(function() { 
    var num = 0; 
       $('.active:checked').each(function() { 
        num++; 
       }); 
    if(num >= 2) 
    { 
      $('.active:checked').attr("disabled", "disabled"); 
      $('.active:checked').each(function() { 
        $(this).removeAttr(); 
       }); 
    } 
    else 
    { 
      $('.active').removeAttr("disabled", "disabled"); 
    } 
}); 
0

вот образец jQuery Dropdown Check List с пределом

onItemClick: function(checkbox, selector){ 
    var justChecked = checkbox.prop("checked"); 
    var checkCount = (justChecked) ? 1 : -1; 
    for(i = 0; i < selector.options.length; i++){ 
    if (selector.options[i].selected) checkCount += 1; 
    } 
    if (checkCount > 3) { 
    alert("Limit is 3"); 
    throw "too many"; 
    } 
} 
0

Вы можете сделать это с помощью этого

var $b = $('input[type=checkbox]'); 
if(($b.filter(':checked').length)>2){ 
$b.attr("disabled", true); 
} 

или вы можете использовать

$(':checkbox:checked").length 
$(":checkbox").filter(':checked').length 

надеюсь, что это поможет.