重命名jstree节点问题

时间:2011-08-25 02:07:30

标签: javascript jstree

我使用以下代码重命名jstree节点(使用crrm插件):

$('#categoriesTree').jstree('rename');

如何知道节点是否已成功重命名(按Enter键)或重命名已取消(按Esc键)?事件'rename_node.jstree'不提供有用的信息。

1 个答案:

答案 0 :(得分:2)

您无法通过内置函数了解它,但您可以修改jquery.jstree.js。 在非压缩版本中查找字符串_show_input : function (obj, callback)(第1263行附近),您将看到:

"blur" : $.proxy(function () {
    var i = obj.children(".jstree-rename-input"),
        v = i.val();
    if(v === "") { v = t; }
    h1.remove();
    i.remove(); // rollback purposes
    this.set_text(obj,t); // rollback purposes
    this.rename_node(obj, v);
    callback.call(this, obj, v, t);
    obj.css("position","");
    console.log('click outside or blur after esc / enter'); 
}, this),
"keyup" : function (event) {
    var key = event.keyCode || event.which;
    if(key == 27) { this.value = t; this.blur(); 
         console.log('press esc'); 
         return; }
    else if (key == 13) { 
         this.blur(); 
         console.log('press enter'); 
         return; 
    } else {
        h2.width(Math.min(h1.text("pW" + this.value).width(),w));
    }
}, //...

我在这里添加了三行(console.log),现在您可以在控制台中看到您的节点发生了什么。而不是console.log,您可以将一些类作为标志添加到元素中,稍后再读取它或制作自定义事件,但我不知道如何执行此操作。这取决于你。

相关问题