2017-09-08 106 views
0

我希望能得到一些幫助,解決我遇到的問題。我想設置一個小的延遲,當用戶在網頁上找到的下一個輸入字段被選中之前按下TAB按鈕時。原因在於我使用AJAX來構建訂單表單字段,其中包含可擴展和可摺疊的表格,這些表格將從用戶處獲得輸入。按下TAB按鈕時,如何延遲移動到下一個輸入欄?

我已經設置使用onfocusout來調用一個函數,該函數展開用戶在離開最後一個字段後所在的當前表下面的表,並且希望第一個輸入字段在後面自動選擇。當用戶通過點擊退出表格的最後一個字段時,所有內容都可以正常工作,但是當退出表格時,我認爲存在一個問題,因爲沒有要檢索下一個表格之前要選中的字段使用AJAX進行顯示。

如果需要,我可以提供代碼,但我認爲我錯過了某些東西,而不是在某處出現錯誤。幫助將不勝感激,我很樂意澄清任何不清楚的事情。謝謝!

+1

'onfocus'不是一件好事。使用'onblur'。 – Xaqron

回答

0

所以,我創建了一個非常基本的例子,說明這可以如何工作。我的例子只考慮輸入,但你可以使用代碼來做你所需要的。

警告:防止自然瀏覽器行爲可能會非常棘手,因此請注意可能導致的其他問題。

下面是一個小提琴顯示你如何能做到這一點:https://jsfiddle.net/iamjpg/wme339h9/

document.onkeydown = TabExample; 

// Basic function 
function TabExample(evt) { 
    // Capture event 
    var evt = (evt) ? evt : ((event) ? event : null); 
    // Tab keycode constant 
    var tabKey = 9; 
    // If key is tab... 
    if (evt.keyCode == tabKey) { 
    // Prevent the next focus. 
    evt.preventDefault() 
    // Grab current focused element 
    var focusedElement = document.activeElement; 
    // Get array of inputs 
    var inputs = document.getElementsByTagName('input'); 
    // Set delay of 2 seconds. 
    setTimeout(function() { 
     // Loop through inputs 
     for (i = 0; i < inputs.length; i++) { 
     // If current evaluated input is one with focus... 
     if (inputs[i] === document.activeElement) { 
      // Grab the next index... 
      var focus_input = i + 1; 
      // Assure it isn't undefined. 
      if (inputs[focus_input]) { 
      // Give new input focus. 
      inputs[focus_input].focus(); 
      } 
     } 
     } 
    }, 2000) 
    } 
} 

祝你好運!

+0

非常感謝您的幫助!非常感謝。 –

相關問題