2014-01-17 3 views
2

Я использую Jquery bootstrap multiselect plugin, который кажется довольно хорошим и выполняет большинство требований, которые мне нужны.Jquery bootstrap multiselect optgroup selection

Единственная дополнительная функциональность, которую я хочу, - это добавить флажок в OptGroup, поэтому, если пользователь хочет выбрать полную группу, они могут выбрать все, щелкнув по нему.

любая помощь оценена.

http://davidstutz.github.io/bootstrap-multiselect/#examples

enter image description here

ответ

4

Попробуйте что-то вроде этого:

$('.multiselect-group').before('<input type="checkbox" />'); 
$(document).on('click', '.multiselect-group', function(event) { 
    var checkAll = true; 
    var $opts = $(this).parent().nextUntil(':has(.multiselect-group)'); 
    var $inactive = $opts.filter(':not(.active)'); 
    var $toggleMe = $inactive; 
    if ($inactive.length == 0) { 
     $toggleMe = $opts; 
     checkAll = false; 
    } 
    $toggleMe.find('input').click(); 
    $(this).parent().find('input').attr('checked', checkAll); 
    event.preventDefault(); 
}); 
+0

Это хорошо работает только я могу настроить пользовательский интерфейс, чтобы посмотреть настроить выравнивание флажка. единственная проблема заключается в том, что при выпадающем флажке флажка optgroup автоматически закрывается. любая работа вокруг? –

+0

Я считаю, что это из обработчика события click в родительском списке. Используйте event.preventDefault(). Я обновлю ответ, чтобы показать это. – PatrickDelancy

+0

любая помощь будет оценена. –

4

Вы можете использовать event.stopPropagation(); Я не могу комментировать из-за меньшей репутации. Надеюсь, это поможет.

1

После того, как я проверил группу опций, а затем снял флажок, если я захочу проверить ее снова, она проверит все параметры из группы, но группа не была отмечена.

Для того, чтобы группы параметров, которые будут правильно отображаться в зарегистрированном/снят после нескольких попыток заменить:

$(this).parent().find('input').**attr**('checked', checkAll); 

с

$(this).parent().find('input').**prop**('checked', checkAll); 
3

Нет необходимости делать какие-либо код для достижения ваших требований.

Существует вариант называется enableClickableOptGroups в этом плагине, чтобы выбрать все опции optgroup

http://davidstutz.github.io/bootstrap-multiselect/#configuration-options-enableClickableOptGroups

+0

: D круто! Вот почему они говорят: RTFM! – Srichakradhar

Смежные вопросы