在删除jstree的节点之前显示确认对话框

时间:2013-06-30 13:43:46

标签: jquery-ui webforms jquery-ui-dialog jstree

我使用jstree和jquery-ui v1.10.1。我在树上使用上下文菜单,我想在删除节点之前显示确认对话框(如jquery-ui对话框)。 我在“before.jstree”事件中使用对话框,但是在显示对话框时,在选择选项(是或否)之前,将删除所选节点。 如何解决这个问题?

.bind("before.jstree", function(e, data) {
                  if (data.func === "remove") {
                      if (!confirmRemove()) {
                          e.stopImmediatePropagation();
                          return false;
                      }
                  }
              }

function confirmRemove() {
return  $confirmDialog.dialog('open');

}

2 个答案:

答案 0 :(得分:0)

JQuery-UI-Dialog是异步的;如果你调用它,你的事件处理程序不会停止执行并等待,但继续并删除节点。

尝试使用JavaScript-Dialog confirm(),因为这是同步的,并且在用户确认或拒绝对话之前停止进一步执行。

答案 1 :(得分:0)

我使用的是2.1.0版本,还有另一种解决方案。

您需要做的是在check_callback选项中添加一个函数。 像这样:

        $("#your_tree").jstree({
        "core": {
            "check_callback": function (operation, node, node_parent, node_position, more) {
                // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit'
                // in case of 'rename_node' node_position is filled with the new node name
                if (operation === 'delete_node') {
                    if (!confirmRemove()) {
                        return false;
                    }
                }
                return true;
            }
        }

我知道这是一个老问题,但我找了一个更近期的问题/答案,但没有找到它。

希望对有同样问题的其他人有所帮助:)