Javascript 使用Enter键移动到输入
是否可以使用enter键移动到表单中的下一个输入字段?我也想使用标签,但是回车键也很好 仅供参考-我确实有几个文本区域,我需要在返回时使用enter键。这会是一场冲突吗 多谢各位。 Erik在黑暗中拍摄(假设您的文本区域已对齐):Javascript 使用Enter键移动到输入,javascript,jquery,forms,input,enter,Javascript,Jquery,Forms,Input,Enter,是否可以使用enter键移动到表单中的下一个输入字段?我也想使用标签,但是回车键也很好 仅供参考-我确实有几个文本区域,我需要在返回时使用enter键。这会是一场冲突吗 多谢各位。 Erik在黑暗中拍摄(假设您的文本区域已对齐): 如果要将名为“Tabonner”的类添加到要按enter键循环的字段中 $(document).on("keypress", ".TabOnEnter" , function(e) { //Only do something when the user p
如果要将名为“Tabonner”的类添加到要按enter键循环的字段中
$(document).on("keypress", ".TabOnEnter" , function(e)
{
//Only do something when the user presses enter
if( e.keyCode == 13 )
{
var nextElement = $('[tabindex="' + (this.tabIndex+1) + '"]');
console.log( this , nextElement );
if(nextElement.length )
nextElement.focus()
else
$('[tabindex="1"]').focus();
}
});
//Hidden inputs should get their tabindex fixed, not in scope ;)
//$(function(){ $('input[tabindex="4"]').fadeOut(); })
虽然没有前面的答案那么可爱,但它现在起作用了:
通过这种方式,您可以使用标准HTML功能(tabindex)来确定循环顺序。隐藏元素的tabindex应该被删除。这将非常不直观,因为对于textareas,也可以输入换行符,对吗?对你应该吗?不。弄乱默认浏览器行为是不好的。浏览器训练用户这样做这样做那样做——至少对我来说,如果你偏离了这一点,那网页会激怒我。+1表示友好的想法。是的,这不是直观的,但我发现我自己在一个未完成的表单上点击回车键。现在,重新思考你的问题,看到我专注于一个被遗忘的输入是一个非常好的主意。(不要说点击回车键(如果输入了所有输入),它将提交表单!)+100这是可能的,但不要这样做。TAB键就是用于此目的的。+1。我喜欢这个类的想法,函数的内容显示了一般原理,但实际解决方案可能需要找出下一个可编辑元素是什么,而不仅仅是使用
.next()
@nnnnnn现实世界中的解决方案必须为我猜的每个输入元素设置tabindex。此方法仅循环文本输入,textarea如何?还有一件事:如果其中一个输入具有style=“display:none;”,则在具有display:none;”的输入之前输入key stop function on text input@armen,任何隐藏输入的方法都应该删除tabindex。在文本区域上循环是个好主意,我添加了它。文本区域仍然有一个小问题,因为当它有焦点时,回车键必须创建新行,但不能跳转到下一个元素。另外,这种方法对我来说也不可行,因为一半表单元素是“静态”的,另一半是通过ajax调用呈现的,不同的输入元素数量取决于环境,将元素随机放置在表单的不同位置,因此它们没有“连续性”,因此无法告诉ajax返回这些元素。
$(document).on("keypress", ".TabOnEnter" , function(e)
{
//Only do something when the user presses enter
if( e.keyCode == 13 )
{
var nextElement = $('[tabindex="' + (this.tabIndex+1) + '"]');
console.log( this , nextElement );
if(nextElement.length )
nextElement.focus()
else
$('[tabindex="1"]').focus();
}
});
//Hidden inputs should get their tabindex fixed, not in scope ;)
//$(function(){ $('input[tabindex="4"]').fadeOut(); })