2017-07-19 71 views
1

我的頁面上有多個FilteringSlect,除了第一個,其餘的都被禁用。在第一次選擇一個值時,第二個filteringselect被啓用,等等。我能夠實現這一點。當用戶在第一個過濾選擇中選擇數值,然後按Tab鍵進入下一個過濾選擇,它將被啓用,但用戶必須在第二個過濾器上單擊鼠標以選擇輸入值。我有一個jsfiddle鏈接dijit filteringselect focus

`http://jsfiddle.net/qpue91L9/75/` 

它演示了這個問題。我想要的是,只要用戶選項卡從第一次過濾選擇,下一個應該啓用,沒有額外的點擊,用戶應該能夠通過在fitleringselect文本框內鍵入來選擇一個新的值。

+0

這裏沒有看到問題。在你的小提琴中,從第一個下拉列表中選擇一些東西后,我選擇第二個下拉列表,然後立即開始輸入或使用向上/向下箭頭滾動選擇(不需要點擊)。你使用的是什麼瀏覽器??我嘗試了它在Firefox中,它的工作。 – GoinOff

+0

@ GoinOff,我就是這麼做的。將鼠標光標放在第一個過濾選擇上,然後鍵入'A'。立即,您會看到所有狀態都以字母「A」開頭,默認情況下,「阿拉巴馬」會突出顯示並顯示在文本框中。現在按tab鍵,控制轉到下一個Filteringselect,除非您在該過濾選擇上單擊鼠標,否則不能輸入任何內容。 –

回答

0

我檢查了你的榜樣,並得到了它有些工作....

Update Example

基本上,我加了這一點:

require([ "dijit/focus", "dojo/dom", "dojo/domReady!" ], function(focusUtil, dom){ 
    var domObj = dom.byId("stateSelect1"); 
    focusUtil.focus(domObj); 
}); 

也加入tabIndex屬性,每個選擇對象。問題是它只有在你通過點擊它從列表中選擇一個項目時才起作用。如果使用標籤,那麼它不起作用。你可以使用這個例子,並捕獲標籤事件,使其按照你想要的方式工作。

+1

@ GoinOff,讓我在我的項目中試試這個,並讓你知道。再次感謝你的幫助。 –

1

我想我得到它的工作[工作撥弄] [1]

[1]: http://jsfiddle.net/qpue91L9/125/ 

同樣的建議,提供了完整的工作代碼

HTML代碼

<input id="stateSelect"> 
<input id="stateSelect1"> 
<input id="stateSelect2"> 

JS代碼

require([ 
     "dojo/store/Memory", "dojo/on","dijit/form/FilteringSelect", "dojo/domReady!",'dijit/registry',"dijit/focus","dojo/dom" 
    ], function(Memory, on,FilteringSelect,ready,registry,focusUtil,dom){ 
     var stateStore = new Memory({ 
      data: [ 
       {name:"Alabama", id:"AL", timeStamp:"1211753600"}, 
       {name:"Alaska", id:"AK", timeStamp:"1211753601"}, 
       {name:"American Samoa", id:"AS", timeStamp:"1211753602"}, 
       {name:"Arizona", id:"AZ", timeStamp:"1211753603"}, 
       {name:"Arkansas", id:"AR", timeStamp:"1211753604"}, 
       {name:"Armed Forces Europe", id:"AE", timeStamp:"1211753605"}, 
       {name:"Armed Forces Pacific", id:"AP", timeStamp:"1211753606"}, 
       {name:"Armed Forces the Americas", id:"AA", timeStamp:"1211753607"}, 
       {name:"California", id:"CA", timeStamp:"1211753608"}, 
       {name:"Colorado", id:"CO", timeStamp:"1211753609"}, 
       {name:"Connecticut", id:"CT", timeStamp:"1211753610"}, 
       {name:"Delaware", id:"DE", timeStamp:"1211753611"} 
      ], idProperty: "timeStamp" 
     }); 

     var filteringSelect = new FilteringSelect({ 
      id: "stateSelect", 
      store: stateStore, 
      tabIndex: 1, 
      searchAttr: "name", 
      identifier: "timeStamp", 

     }, "stateSelect").startup(); 
     var filteringSelect1 = new FilteringSelect({ 
      id: "stateSelect1", 
      name: "state", 
      tabIndex: 2, 
      store: stateStore, 
      searchAttr: "name", 
      identifier: "timeStamp" , 
      disabled:true, 
     }, "stateSelect1").startup(); 
     var filteringSelect2 = new FilteringSelect({ 
      id: "stateSelect2", 
      name: "state", 
      tabIndex: 3, 
      store: stateStore, 
      searchAttr: "name", 
      identifier: "timeStamp", 
      disabled:true,   
     }, "stateSelect2").startup(); 

     on(dijit.byId("stateSelect"),"KeyPress",function(evt){ 
     dijit.byId("stateSelect1").set("disabled",false); 

     }); 
     on(dijit.byId("stateSelect"),"change",function(evt){ 
     dijit.byId("stateSelect1").set("disabled",false); 
     dijit.byId("stateSelect1").focus(); 

     }); 
     on(dijit.byId("stateSelect1"),"KeyPress",function(evt){ 
     dijit.byId("stateSelect2").set("disabled",false); 

     }); 
     on(dijit.byId("stateSelect1"),"change",function(evt){ 
     dijit.byId("stateSelect2").set("disabled",false); 
     dijit.byId("stateSelect2").focus(); 

     }); 


    }); 
+0

剛剛嘗試過你的新例子。現在完美運作。 – GoinOff

+0

@litelite,感謝您的評論。我已經用工作代碼更新了答案。 –

相關問題