2011-03-12 34 views
3

我目前在(也許)有一個簡單的編程問題。我在jQuery的jquery:在特定部分輸入到Tab觸發器

相當福利局這些都是我的代碼:

$(':text').keyup(function(e) { 
    if(e.keyCode == 13) { 
     alert('Enter key was pressed.'); 

     $(this).trigger({type: 'keyup', keyCode: 9}); 
    } 
}); 

我搜索有關這個問題近20篇,其中沒有一個實際上是如此簡單。這裏的問題

該tab鍵應該取代enter,但是,該tab沒有觸發。而我的意思是不觸發,在某種程度上是有趣的。我試圖將9改爲13(這是輸入本身),並且我的瀏覽器將不斷循環警戒線,這意味着輸入命中另一個輸入,這是由警報下面的代碼觸發的

我做錯了什麼?如果按鍵代碼9被按下,我必須告訴jquery怎麼做?有什麼辦法讓它觸發,就好像我自己敲擊鍵盤一樣?

tyvm前:d任何幫助將不勝感激

+0

爲什麼你會試圖更換輸入密鑰?其他東西是否與輸入鍵綁定?你是否想讓表單在標籤上提交? 我沒有看到警報循環的任何證據。看到這裏:http://jsfiddle.net/philwinkle/6KdUj/ 我真的建議使用'console.log()'時進行調試這種排序,因爲警報阻止腳本執行; – philwinkle

+0

,因爲它用於使用輸入而不是製表符在文本框之間移動。我認爲編入索引的文本框太麻煩了,因爲所有的文本框都是自動生成的(不是代碼方式,我編碼它,以便它會生成一組新的文本框,如果它用完了)和另一組文本框可以插在中間,使整個標籤索引的東西幾乎沒有價值。 以及有關警報循環的證據,請嘗試將keyCode:9更改爲keyCode:13。它會循環。 – Alex

回答

0

嘗試重置的焦點,而不是發送一個標籤。

$(':text').keydown(function(e) { 
    if(e.keyCode == 13 && $(this).attr('type') != 'submit') { 
     e.preventDefault(); 
     $(this).nextAll('input:first').focus(); 
    } 
});