2014-01-30 24 views
1

我正在嘗試做一件非常簡單的事情,並且似乎碰到了一堵磚牆。它可能已經在文檔中,但我沒有找到它。jstree contextmenu - 如何保存更改

我試圖保存新創建的節點或重命名的節點。我開始有一個非常基本的設置:

$('#tree').jstree({ 
    'core' : { 
     'check_callback' : true 
    }, 
    'plugins' : ['contextmenu', 'dnd', 'state'] 
}).on('create_node.jstree', function(e, data) { 
    console.log('saved'); 
}); 

什麼我期待的是:
1)右鍵點擊現有節點之一。
2)單擊「創建」 - 這是當console.log('saved');火災
3)我在一個新的節點的名稱鍵入
4)按「Enter」來保存數據 - 在這一點上我想運行一個Ajax請求在數據庫中保存新節點。

我該如何從第4點抓住事件?

回答

1

該插件的作者建議偵聽rename_node事件。因此,工作代碼爲:

$('#tree').jstree({ 
    'core' : { 
     'check_callback' : true 
    }, 
    'plugins' : ['contextmenu', 'dnd', 'state'] 
}).on('rename_node.jstree', function(e, data) { 
    console.log('saved'); 
}); 
+0

我在樹中創建文件夾和文件時會用ajax保存在數據庫中,然後在成功時刷新頁面以顯示樹中數據庫的新數據。有沒有一個教程顯示如何Ajax調用服務器可以完成?我會很感激,如果任何人都可以回答,因爲我真的卡住了。謝謝。 – naz786

0

有時如果不工作,你想要去create_node事件,然後使用,

$('#tree').jstree({ 
'core' : { 
    'check_callback' : true 
}, 
'plugins' : ['contextmenu', 'dnd', 'state'] 
}).bind('create_node.jstree', function(e, data) { 

console.log('saved'); 

}); 

這也可能只是做的伎倆。或者,如果在某些彈出窗口中使用它,而不是在jquery事件中使用實況事件,那肯定會發生。