2011-08-25 96 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),現在你可以在控制檯中看到什麼與你的節點發生。你可以添加一些類到你的元素作爲標誌,而不是在以後讀取它,或者創建自定義事件,但我不知道如何做到這一點。隨你便。