2011-06-15 68 views
7

在jQuery中,如何触发用户标签到下一个输入字段的行为?如何使用jQuery自动选项卡到下一个字段?

我已经试过这样:

var e = jQuery.Event("keydown"); 
e.which = 9; // # Key code for the Tab key 
$("input").trigger(e); 

但触发事件光标不移动到下一个字段。

我想我可以使用focus()手动移动光标,但是决定下一个字段应该是浏览器已经知道如何去做的事情,所以看起来更简单一点就是触发一个标签。

任何想法?

回答

3

见接受的答案来this question。例如,如果您想在输入特定数量的字符时将焦点移至下一个字段,则可以在keyup事件中使用该代码,并检查输入的字符数。

该答案中的代码通过获取表单中的输入集,找到所选输入并将1添加到所选输入的索引,然后在具有该索引的元素上触发focus事件来工作。

2

这里有一个解决方案,通过http://jqueryminute.com/set-focus-to-the-next-input-field-with-jquery/

$.fn.focusNextInputField = function() { 
    return this.each(function() { 
     var fields = $(this).parents('form:eq(0),body').find(':input').not('[type=hidden]'); 
     var index = fields.index(this); 
     if (index > -1 && (index + 1) < fields.length) { 
      fields.eq(index + 1).focus(); 
     } 
     return false; 
    }); 
}; 

使用如下:

$('current_field_selector').focusNextInputField(); 
0

您是否尝试过使用

$("input").trigger('keypress', e);

的解决方案吗?
我发现有时候明确是最好的。 如果不工作,可能连

$("input").trigger('keypress', [{preventDefault:function(){},keyCode:9}]);

希望这会有所帮助。

相关问题