解決方法是向jsTree添加'keypress'事件以停止傳播Enter鍵。
$("#demo1").keypress(function (event) {
if (event.keyCode == '13') {
event.preventDefault();
}
});
完整的解決方案:
- 是基於在jsTree 1.x中
- 這使節點在圖像被點擊
- 並存儲更名值時「重命名模式」轉換成一個隱藏的輸入,將其傳遞給MVC控制器。
...
<div id="demo1" class="demo">
<ul>
<li id="phtml_1" rel="root">
<a href="#">Root node 1</a>
<ul>
<li id="phtml_2">
<a href="#">Child node 1</a>
</li>
<li id="phtml_3" rel="skill_other">
<a href="#">Other
<input type="hidden" value="Other" id="phtml_3Other" />
</a>
</li>
</ul>
</li>
<li id="phtml_4" rel="root">
<a href="#">Root node 2</a>
</li>
</ul>
</div>
<script type="text/javascript" class="source">
$(function() {
$("#demo1")
.bind("rename.jstree", function (e, data) {
var nodeId = '#' + data.args[0].attr('id');
var text = $("#demo1").jstree(nodeId).get_text();
$(nodeId + 'Other').val(text);
})
.jstree({
"types" : {
"valid_children" : [ "root" ],
"types" : {
"root" : {
"icon" : {
"image" : "./_drive.png"
},
"valid_children" : [ "default" ],
"max_depth" : 2,
"hover_node" : false
//"select_node" : function() {return false;}
},
"default" : {
"valid_children" : [ "default" ]
}
}
},
"plugins" : ["themes","html_data","dnd","ui","types", "crrm"]
});
$("li[rel='skill_other'] > a > ins").click(function() {
var node = $(this).parent().parent();
$("#demo1").jstree("rename", node);
});
});
</script>
對於更多的瀏覽器友好的方式使用:$( '#demo1的')的keydown(函數(事件){VAR鍵= event.keyCode event.keyCode:事件(key =='13'){event.preventDefault();}});事件。 – Bob 2010-07-22 11:37:35
@Byron Cobb你是什麼意思? Stef的較短版本適用於IE8,Chrome和FF4。 – MGOwen 2011-06-20 01:25:58
此外,顯然這個錯誤在最新的jstree提交中得到修復,只是jstree網站上的版本是舊的(儘管主動開發!沒有穩定版本,一年也沒有!)。 – MGOwen 2011-06-20 01:27:31