2012-01-10 58 views
1

我試圖通過jsTree和搜索插件與「show_only_matches」參數使用導航。但是當我使用向上和向下箭頭瀏覽樹時,可以選擇隱藏節點,但是我想穿過「可見」節點。是否可以使用正確的導航鍵(熱鍵插件)與搜索插件(「show_only_matches」:真)

+1

你可以在jsFiddle上設置演示嗎? – glortho 2012-01-11 16:32:43

+0

花了一些時間。請查看http://jsfiddle.net/G789k/25/如果在輸入字段中輸入「Bas」並單擊過濾按鈕。嘗試使用「向下箭頭」鍵時。在第一次按下鍵盤事件時,將會選擇根基本文件夾。在第二次按下鍵盤事件時,將選擇登錄文件夾(但它是隱藏的!)。在第三次按鍵事件時,將選擇基本文件夾(位於基本文件夾中)。 – 2012-01-11 18:26:55

+0

我明白了。應該很容易覆蓋箭頭鍵跳過隱藏的節點。 (另一種選擇是修改jstree源代碼,但如果可以,我會避免這種情況。)現在我將處理它併爲您解決它... – glortho 2012-01-11 18:49:25

回答

0

的答案看到這個的jsfiddle:http://jsfiddle.net/G789k/27/

我之所以這樣做是對的向下鍵,所以你需要去適應它了。幾乎完全一樣的東西 - 只需將_get_next更改爲_get_prev即可。

這裏是代碼的相關部分,供參考:

"search" : { 
    "case_insensitive" : true, 
    "show_only_matches": true   
}, 
"ui" :{ 
    "select_limit" : 1, 
}, 
// overriding hotkey 
'hotkeys': { 
    'down': function() { 

     // most of this stolen from jstree.js source 
     var o = this.data.ui.hovered || this.data.ui.last_selected || -1, 
      node = this._get_next(o); 

     this.hover_node(node); 

     // call self if selected node is hidden 
     // note: this is a somewhat dangerous (and deprecated) way to do recursion. 
     // ultimately, it would be better if your down function was 
     // defined elsewhere and called here as needed. 

     if (node.length && node.is(':hidden')) arguments.callee.call(this); 

     return false; 
    } 
} 

我也覺得默認的功能 - 導航到隱藏節點 - 是不可取和jstree開發應該修復它。考慮將它作爲錯誤修正/請求提交給他。

相關問題