2014-08-29 48 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