我使用以下代码重命名jstree节点(使用crrm插件):
$('#categoriesTree').jstree('rename');
如何知道节点是否已成功重命名(按Enter键)或重命名已取消(按Esc键)?事件'rename_node.jstree'不提供有用的信息。
答案 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
,您可以将一些类作为标志添加到元素中,稍后再读取它或制作自定义事件,但我不知道如何执行此操作。这取决于你。