Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按下Enter键时,如何启动Tab键?_Javascript - Fatal编程技术网

Javascript 按下Enter键时,如何启动Tab键?

Javascript 按下Enter键时,如何启动Tab键?,javascript,Javascript,这就是我所拥有的,而且效果很好。 但是我想返回tab键,而不是什么都不发生 $(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) { if (event.keyCode == 13) { event.preventDefault(); } }); 我想要的是: if (event.keyCode == 13) { event.preven

这就是我所拥有的,而且效果很好。 但是我想返回tab键,而不是什么都不发生

$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
    if (event.keyCode == 13) {
        event.preventDefault();
    }
});
我想要的是:

if (event.keyCode == 13) {
    event.preventDefault();
    return event.keyCode = 9; <<= or something similar and simple
}
if(event.keyCode==13){
event.preventDefault();
return event.keyCode=9;我怀疑您真正想要的是移动到表单中的下一个字段

如果是这样,您可以轻松找到下一个表单字段并使用
.focus()
对其进行聚焦。例如:

var fields = $(this).closest("form").find("input, textarea");
var index = fields.index(this) + 1;
fields.eq(
  fields.length <= index
  ? 0
  : index
).focus();
var fields=$(this).最近的(“表单”).find(“输入,文本区域”);
var索引=字段。索引(this)+1;
fields.eq(

fields.length我得到了一个公认的答案,可以为我工作,但我需要弄清楚将代码准确粘贴到哪里:

$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
    if (event.keyCode == 13) {
        var fields = $(this).closest("form").find("input, textarea");
        var index = fields.index(this) + 1;

        fields.eq(
            fields.length <= index
                ? 0
                : index
        ).focus();
        event.preventDefault();
    }
});
$(文档)。在(“按键”上,“:输入:不(文本区域):不([type=submit])”,函数(事件){
如果(event.keyCode==13){
var fields=$(this).closest(“form”).find(“input,textarea”);
var索引=字段。索引(this)+1;
fields.eq(

fields.length我认为“returnthetab键”的意思是,您希望触发第二个事件,就好像按下了tab键一样。(您只需假设“returning”是实现这一点的方法。)对这两种方法都是肯定的…在我看来,如果key==13而返回代码9,那么替换代码就更为严格了。我必须防止默认输入,所以为什么不使用tab呢?我建议不要使用这种方法,因为你打破了用户对合理的浏览器可用性、表单输入和基本web控件的使用的期望。而且它会对于视力受损的用户来说,这也是不直观的,如果你担心的话。我支持Mano的评论。当开发人员试图变得聪明并打破常见的用户体验期望时,这真的很烦人。@Manodesra:总体上同意,但这次需要阻止返回键提交表单。但不是在返回时不采取任何行动,为什么不是tab。我有另一个停止返回键提交的原因,但不是为了这次讨论。这就是重复问题的有效之处。是的,这将起作用,甚至可以做我想做的。但问题仍然是:我可以用返回键代码代替tab键代码吗?@DanielYantis:对不起,我完全无法回答这个问题,不是吗?:-)我不认为你可以。你可以尝试创建一个合成的
键盘事件
,但我怀疑结果是否会好,跨浏览器,特别是当合成内置事件周围的区域一直是一个真正的移动目标时……但也许最新的版本使之成为可能,我可能有点过时,因为我从未发现我需要合成内置ev恩茨。