问题描述
|
在jQuery中,如何触发用户切换到下一个输入字段的行为?
我已经试过了:
var e = jQuery.Event(\"keydown\");
e.which = 9; // # Key code for the Tab key
$(\"input\").trigger(e);
但是触发事件不会将光标移动到下一个字段。
我想我可以使用focus()
手动移动光标,但是确定浏览器应该知道哪个字段应该是浏览器已经知道的操作,因此似乎只需触发一个选项卡就更干净了。
有任何想法吗?
解决方法
请参阅此问题的公认答案。例如,如果您想在输入一定数量的字符后将焦点移到下一个字段,则可以在
keyup
事件中使用该代码,并检查输入的字符数。
该答案中的代码通过以下方式起作用:获取表单中的一组输入,找到所选输入并将1添加到所选输入的索引中,然后触发具有该索引的元素上的“ 3”事件。
, 这是一个解决方案,通过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();
, 有一个JQuery插件可用:
http://www.mathachew.com/sandbox/jquery-autotab/
, 您是否尝试过使用
$(\"input\").trigger( \'keypress\',e );
作为解决方案?
我发现有时候露骨是最好的。
如果那甚至不起作用
$(\"input\").trigger( \'keypress\',[{preventDefault:function(){},keyCode:9}] );
。
希望这可以帮助。