Как узнать, установлен ли все флажок jstree или нет - PullRequest
0 голосов
/ 06 ноября 2019

Я использую jstree с флажком.

У меня есть еще один флажок с идентификатором chkSelectAll (Выбрать все). Когда пользователь выбирает его, все флажки jstree отмечены, и если мы отменим выбор, все флажки jstree будут сняты, используя следующий код:

  $('#chkSelectAll').change(function() {          
       if ($('#chkSelectAll').is(":checked"))
       { 
           $("#drpDownSource .source-list").jstree().check_all(true);
       }
       else
       {
           $("#drpDownSource .source-list").jstree().uncheck_all(true);
       }
     }); 

Теперь, если все флажки jstree выбраны вручную, я хочу установить флажок chkSelectAll иесли какой-либо один флажок jstree снят, то я хочу, чтобы chkSelectAll был снят. Я использую код ниже:

Итак, как я могу узнать, все ли флажки jstree отмечены или нет?

.on("check_node.jstree uncheck_node.jstree", function (e, data) {            
        debugger;
        if (e.type == "uncheck_node") {
            $("#chkSelectAll").prop( "checked", false );                
        }
        else if (e.type == "check_node") {
            // here I get only one checkbox's status.
            // How to check all checkboxe's status
        }
    }); 

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Если у вас есть один родительский узел с определенным идентификатором, то вы можете использовать is_checked (obj) для родительского узла, чтобы решить, все ли другие узлы проверены или нет.

0 голосов
/ 07 ноября 2019

Пожалуйста, посмотрите на https://www.jstree.com/api/#/?q=checkbox&f=check_node.jstree

Пожалуйста, обратите внимание ниже

triggered when an node is checked (only if tie_selection in checkbox settings is false)

Я надеюсь, что ваша конфигурация плагина флажка дерева имеет настройку tie_selection, чтобы бытьустановить как false.

Если вы ищете, все ли узлы проверены вручную, чтобы поставить галочку «Выбрать все» выше, то вы можете использовать ниже c

else if (e.type == "check_node") {                  
  if ($(this).jstree().get_json('#', {flat:true}).length === $(this).jstree().get_checked(true).length)
    $("#chkSelectAll").prop( "checked", true );                     
}

Для полного и рабочего примера,Вы можете взглянуть на https://everyething.com/Example-of-jsTree-with-select-all-checkbox

...