使用Jquery在关键后关注下一个输入

时间:2011-08-27 21:07:51

标签: jquery focus onkeyup

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

 $(":input[type='text']").keyup(function(event){

   if(valid)
     {
         // take a focus to next input element, which is again a text type.
     }

  });

如何在按键后将焦点跳到下一个输入元素。

Sarfraz回答: -

 <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>

来自萤火虫问题

  $(this).next("[type=\"text\"]")[0] is undefined
  [Break On This Error] $(this).next('[type="text"]')[0].focus(); 

2 个答案:

答案 0 :(得分:5)

更新

以下是修改代码的方法:

$(":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()focus

一起使用
$(this).next('[type="text"]')[0].focus();

所以这就是你的代码应该是这样的:

$(":input[type='text']").keyup(function(event){
   if(valid) {
      $(this).next('[type="text"]')[0].focus();
   }
});

答案 1 :(得分:3)

html tabindex属性用于定义在按Tab键时通过输入元素移动的顺序。我首先要设置它。

然后设置选项卡索引(以扩展您的示例):

 $(":input[type='text']").keyup(function(event){
   if(valid)
     {
         var currentIndex = $(this).attr("tabindex");
         var nextIndex = parseInt(currentIndex)+1;
         $("input[tabindex='"+nextIndex+"']").focus();
     }
  });

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