使用Jquery键启动后,关注下一个输入

使用Jquery键启动后,关注下一个输入,jquery,focus,onkeyup,Jquery,Focus,Onkeyup,注意:我的页面只有文本框。没有别的了。(无其他=>无其他输入类型) 如何在向上键后将焦点跳转到下一个输入元素 在萨夫拉兹回答之后:- <div> <input type="text" maxlength="1" size="1" > <input type="text" maxlength="1" size="1" > <input type="text" maxlength="1" size="1" > // sarfraj

注意:我的页面只有文本框。没有别的了。(无其他=>无其他输入类型)

如何在向上键后将焦点跳转到下一个输入元素

在萨夫拉兹回答之后:-

 <div>
   <input type="text" maxlength="1" size="1" >
   <input type="text" maxlength="1" size="1" > 
   <input type="text" maxlength="1" size="1" > // sarfraj -- here it crash   Please check below for error.
 </div>


 <div>
   <input type="text" maxlength="1" size="1" >
   <input type="text" maxlength="1" size="1" >
   <input type="text" maxlength="1" size="1" >
 </div>
更新: 以下是您应该如何修改代码:

$(":input[type='text']").keyup(function(event){
   if(valid) {
      if ($(this).next('[type="text"]').length > 0){
         $(this).next('[type="text"]')[0].focus();
      }
      else{
         if ($(this).parent().next().find('[type="text"]').length > 0){
            $(this).parent().next().find('[type="text"]')[0].focus();
         }
         else {
           alert('no more text input found !');
         }
      }

   }
});

如何在向上键后将焦点跳转到下一个输入元素

next()
焦点一起使用:

$(this).next('[type="text"]')[0].focus();
因此,您的代码应该是这样的:

$(":input[type='text']").keyup(function(event){
   if(valid) {
      $(this).next('[type="text"]')[0].focus();
   }
});
html属性用于定义在点击tab键时在输入元素中移动的顺序。我将从设置这个开始

因此,设置选项卡索引(以扩展示例):


基本上获取当前元素的
tabindex
,添加1,并获取具有该选项卡索引的元素。

您可以直接使用jQuery的
next()
,而不是计算tabindex:)毫无疑问,但我的想法与您的不同。在这一点上,我假设无论出于何种原因,他可能需要一个特定的迭代顺序。顺便说一句,作为巴基斯坦同胞(我知道我的个人资料上写着AU,但我现在在KHI[即将搬家]),如果你有邀请,我会非常感激。@Ali:我不确定是否有邀请选项,我登录了,但没有找到任何邀请选项。@Sarfarz,别担心,他们说是通过邀请其他成员或查看你的个人资料。显然,我的stackoverflow分数、github公共项目和linkedIn没有达到stackoverflow标准。@Ali:让我完成我的个人资料,然后看看我是否获得邀请特权。嘿,伙计。。我用的是同样的代码。但是如果输入元素是该div中的最后一个元素,它就会崩溃。请让我编辑我的问题以获得更好的解释。。问题是
next()
会在兄弟姐妹之间迭代,一旦兄弟姐妹用完,就完成了。看到您的标记,您的选项将被删除。(a) 迭代所有
input
元素,直到找到下一个(b)使用我的代码(我还没有测试,但应该可以用)。我不介意这个答案,但是它不可靠,因为它非常特定于网站的布局,如果结构发生变化(比如说你做了一个新主题或其他事情),它会破坏代码。@Ali:我同意,假设这里的标记保持不变。你的答案也很好。Mohit做出了选择:-)我天生是一名软件开发人员,我的大部分前端任务都需要OOP风格的编码,因此可重用性和功能与布局的分离非常重要。即使您不需要进行OOP风格的编程,您也应该将功能与表示层分离(这只是一个很好的实践)。
$(this).next('[type="text"]')[0].focus();
$(":input[type='text']").keyup(function(event){
   if(valid) {
      $(this).next('[type="text"]')[0].focus();
   }
});
 $(":input[type='text']").keyup(function(event){
   if(valid)
     {
         var currentIndex = $(this).attr("tabindex");
         var nextIndex = parseInt(currentIndex)+1;
         $("input[tabindex='"+nextIndex+"']").focus();
     }
  });