2014-08-29 26 views
4

的Javascript越来越按键“输入”事件的输入类型文本的Javascript在表单中输入提交到标签

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

行1将有_1为3文本输入和下拉后续的标识由_2为2排

我想什么来实现的是:

Textfield1 ------> left_1 
Textfield2 ------> center_1 
Textfield3 ------> right_1 
DropdownList ----> dd_1 

当我按下left_1进入,我想将输入事件改为center_1的“选项卡”,而如果我确实输入了事件center_1,它将选项卡为right_1

如果我在right_1处输入事件,它将进入下一行left_2

问题通常是,如果你按“TAB”在right_1,将侧重于dd_1

下一个关键的问题是,我得到了在形式的提交按钮,如果我按在任何形式的进入,它只会提交表单。我尝试过禁止使用检查EVENTCODE和防止默认,但这样做的进入,我还是无法改变我的选择把重点放在文本字段提及上述

JsFiddle on my Question

我需要能够去行2在输入第一行的最后一个输入。

回答

2

使用tabIndex属性:

http://www.w3.org/WAI/UA/TS/html401/cp0101/0101-TABINDEX.html

并更新脚本中使用它的值来导航:

var nextIndex = $(this).prop('tabindex') + 1; 
    $('[tabindex=' + nextIndex + ']').focus(); 

完整的示例:

http://jsfiddle.net/kL2ntc2u/7/

+0

最佳的解决方案! +1 – 2014-08-29 08:47:05

+0

你的jsFiddle的作品,但我只是想禁用表单提交按钮,现在我不能点击我的表单提交按钮了:)是否可以允许点击表单提交,但禁用输入键 – user3412075 2014-08-29 09:09:08

+0

@ user3412075看在http://stackoverflow.com/a/11235672/3963330 我更新http://jsfiddle.net/kL2ntc2u/9/ – 2014-08-29 09:39:08

2

对于标签导航,我建议去tabindex

你的问题似乎都聚焦输入元素的2种模式。

  1. 通过回车键
  2. 通过TAB键

正如我已经建议,留在tabindex

为了避免进入关键表单提交和你的#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 
        }); 
    }); 
    

    JSFiddle

  • 1

    如果你想像现在这样做。 您可以调整一些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(); 
        }    
    } 
    

    http://jsfiddle.net/mko1hght/

    +0

    是否有可能通过鼠标点击启用表单提交,我只是想禁用输入密钥 – user3412075 2014-08-29 09:14:40

    +0

    如果您通过keydown或按键更改密码,这是可能的。然后你需要添加e.preventDefault();在你的if函数中。看到这个小提琴http://jsfiddle.net/tgk4rrgL/ 如果你喜欢这个答案,请接受它。 – TeeDeJee 2014-08-29 11:02:13