Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按下TAB按钮时,如何延迟移动到下一个输入字段?_Javascript_Ajax_Tabbing - Fatal编程技术网

Javascript 按下TAB按钮时,如何延迟移动到下一个输入字段?

Javascript 按下TAB按钮时,如何延迟移动到下一个输入字段?,javascript,ajax,tabbing,Javascript,Ajax,Tabbing,我希望我能得到一些帮助来解决我一直遇到的问题。我想在选择网页上的下一个输入字段之前,在用户按下TAB按钮时设置一个小延迟。原因是我正在使用AJAX构建一个订单字段,其中包含可扩展和可折叠的表,这些表将接收用户的输入 我使用onfocusout设置了一个函数,在用户离开最后一个字段后,该函数将在当前表下展开该表,并希望第一个输入字段在离开后立即自动选择。当用户通过单击退出表的最后一个字段时,一切都会正常工作,但当从表中跳出时,我认为这是一个问题,因为在它使用AJAX检索下一个要显示的表之前,没有一

我希望我能得到一些帮助来解决我一直遇到的问题。我想在选择网页上的下一个输入字段之前,在用户按下TAB按钮时设置一个小延迟。原因是我正在使用AJAX构建一个订单字段,其中包含可扩展和可折叠的表,这些表将接收用户的输入

我使用onfocusout设置了一个函数,在用户离开最后一个字段后,该函数将在当前表下展开该表,并希望第一个输入字段在离开后立即自动选择。当用户通过单击退出表的最后一个字段时,一切都会正常工作,但当从表中跳出时,我认为这是一个问题,因为在它使用AJAX检索下一个要显示的表之前,没有一个字段要被标记


如果需要的话,我可以提供代码,但我认为我遗漏了一些东西,而不是在某个地方出错。我们将非常感谢您的帮助,我非常乐意澄清任何不清楚的地方。谢谢大家!

因此,我创建了一个非常基本的示例,说明了这是如何工作的。我的示例只考虑输入,但您可以使用代码来完成所需的操作

警告:防止自然浏览器行为可能很棘手,因此请注意这可能导致的其他问题

下面是一把小提琴,展示了如何做到这一点:

document.onkeydown=TabExample;
//基本功能
函数选项卡示例(evt){
//捕获事件
var evt=(evt)?evt:((事件)?事件:空);
//制表键码常数
var-tabKey=9;
//如果键是tab。。。
if(evt.keyCode==tabKey){
//防止下一个焦点。
evt.preventDefault()
//抓电流聚焦元件
var focusedElement=document.activeElement;
//获取输入数组
var inputs=document.getElementsByTagName('input');
//将延迟设置为2秒。
setTimeout(函数(){
//循环输入
对于(i=0;i

祝你好运

onfocus
不是一个好的事件。使用
onblur
。非常感谢您的帮助!非常感谢。你应该为他的答案投票并标记为正确@ChristopherM你真的应该是这样的@ChristopherM
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)
  }
}