【发布时间】:2011-08-25 02:07:29
【问题描述】:
我使用以下代码重命名 jstree 节点(使用 crrm 插件):
$('#categoriesTree').jstree('rename');
我如何知道节点是成功重命名(按 Enter)还是取消重命名(按 Esc)?事件“rename_node.jstree”没有提供有用的信息。
【问题讨论】:
标签: javascript jstree
我使用以下代码重命名 jstree 节点(使用 crrm 插件):
$('#categoriesTree').jstree('rename');
我如何知道节点是成功重命名(按 Enter)还是取消重命名(按 Esc)?事件“rename_node.jstree”没有提供有用的信息。
【问题讨论】:
标签: javascript jstree
你无法通过内置函数知道它,但你可以修改 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,您可以将一些类作为标志添加到您的元素中并稍后阅读或制作您的自定义事件,但我不知道该怎么做。这取决于你。
【讨论】: