在jQuery中,如何触发用户标签到下一个输入字段的行为?
我试过这个:
var e = jQuery.Event("keydown");
e.which = 9; // # Key code for the Tab key
$("input").trigger(e);
但是触发事件不会将光标移动到下一个字段。
我想我可以使用focus()
手动移动光标,但是决定接下来哪个字段是浏览器已经知道该怎么做的事情,所以触发标签似乎更清晰。
有什么想法吗?
答案 0 :(得分:3)
查看this question的已接受答案。例如,如果您想在输入一定数量的字符时将焦点移动到下一个字段,则可以在keyup
事件中使用该代码,并检查输入的字符数。
该答案中的代码通过获取表单中的输入集,查找所选输入并将1添加到所选输入的索引,然后使用该索引触发元素上的focus
事件来工作。
答案 1 :(得分: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();
答案 2 :(得分:2)
有一个JQuery插件可用:
答案 3 :(得分:0)
您是否尝试过使用
$("input").trigger( 'keypress', e );
作为解决方案?
我发现有时候明确是最好的。
如果这不起作用甚至可能
$("input").trigger( 'keypress', [{preventDefault:function(){},keyCode:9}] );
。
希望这有帮助。