Javascript在表单提交到选项卡上输入

Javascript在表单提交到选项卡上输入,javascript,jquery,html,Javascript,Jquery,Html,Javascript在输入类型文本上获取按键“Enter”事件 我有3个文本输入,1个下拉列表和10行 第1行的3个文本输入的标识符为_1,第2行的下拉列表后跟_2 我想要实现的是: Textfield1 ------> left_1 Textfield2 ------> center_1 Textfield3 ------> right_1 DropdownList ----> dd_1 当我在left\u 1上按enter键时,我想将enter事件更

Javascript在输入类型文本上获取按键“Enter”事件

我有3个文本输入,1个下拉列表和10行

第1行的3个文本输入的标识符为_1,第2行的下拉列表后跟_2

我想要实现的是:

Textfield1 ------>   left_1
Textfield2 ------>   center_1
Textfield3 ------>   right_1
DropdownList ---->   dd_1
当我在
left\u 1
上按enter键时,我想将enter事件更改为
center\u 1
,而如果我在
center\u 1
上输入事件,它将切换为
right\u 1

如果我在
right\u 1
处输入event,它将转到下一行
left\u 2

问题通常是,如果在
右侧按“tab”键,它将聚焦到
dd\u 1

下一个关键问题是,我在表单中得到了一个提交按钮,如果我在任何表单上按enter键,它将只提交表单。在禁用enter之前,我尝试使用检查事件代码和阻止默认值来禁用enter,但这样做时,我仍然无法将enter更改为关注上面提到的文本字段


输入后,我需要能够在最后一次输入时转到第一行的第2行。

对于选项卡导航,我建议转到

您的问题似乎有两种聚焦输入元素的模式

  • 通过回车键
  • 通过制表键
  • 正如我已经建议的,继续使用
    tabindex

    为了避免在enter键和#2用例上提交表单,下面的方法将完成这项工作

    $(function () {
        $("form :input").on("keypress", function (e) {
            var nextIndex = $(this).prop('tabindex') + 1; // from above answer
            $('[tabindex=' + nextIndex + ']').focus();
            return e.keyCode != 13;  // this will ensure to prevent form submit
        });
    });
    

    使用tabindex属性:

    并更新脚本以使用其值进行导航:

        var nextIndex = $(this).prop('tabindex') + 1;
        $('[tabindex=' + nextIndex + ']').focus();
    
    完整示例:


    如果你想现在就这样做。 您可以调整一些javascript

    if(e.keyCode == "13"){     
       var id = $(this).attr('id');
       if(id.indexOf("right") > -1){
           var number = id.split('_')[1];
           number++;
           $("#left_"+number).focus();
        }else{
            $(this).next().focus();
        }            
    }
    

    您的JSFIDLE可以工作,但我只想禁用表单提交按钮的enter,现在我也不能单击表单提交按钮:),是否可以允许单击表单提交,但禁用enterkey@user3412075看,我已经更新了,是否可以通过鼠标单击启用表单提交,我只想禁用回车键这是可能的,如果你改变了向下键或按键键向上键。然后需要添加e.preventDefault();在if函数中。看这把小提琴如果你喜欢这个答案,请接受它。