2011-08-25 93 views
3

我用下面的代码来重命名jstree节点(与CRRM插件):重命名jstree节点问题

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

我怎么知道该节点是否成功更名为(按Enter键)或重命名被取消(由按Esc)?事件'rename_node.jstree'不提供有用的信息。

回答

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),现在你可以在控制台中看到什么与你的节点发生。你可以添加一些类到你的元素作为标志,而不是在以后读取它,或者创建自定义事件,但我不知道如何做到这一点。随你便。