2011-06-15 71 views
7

在jQuery中,如何觸發用戶標籤到下一個輸入字段的行爲?如何使用jQuery自動選項卡到下一個字段?

我已經試過這樣:

var e = jQuery.Event("keydown"); 
e.which = 9; // # Key code for the Tab key 
$("input").trigger(e); 

但觸發事件光標不移動到下一個字段。

我想我可以使用focus()手動移動光標,但是決定下一個字段應該是瀏覽器已經知道如何去做的事情,所以看起來更簡單一點就是觸發一個標籤。

任何想法?

回答

3

見接受的答案來this question。例如,如果您想在輸入特定數量的字符時將焦點移至下一個字段,則可以在keyup事件中使用該代碼,並檢查輸入的字符數。

該答案中的代碼通過獲取表單中的輸入集,找到所選輸入並將1添加到所選輸入的索引,然後在具有該索引的元素上觸發focus事件來工作。

2

這裏有一個解決方案,通過http://jqueryminute.com/set-focus-to-the-next-input-field-with-jquery/

$.fn.focusNextInputField = function() { 
    return this.each(function() { 
     var fields = $(this).parents('form:eq(0),body').find(':input').not('[type=hidden]'); 
     var index = fields.index(this); 
     if (index > -1 && (index + 1) < fields.length) { 
      fields.eq(index + 1).focus(); 
     } 
     return false; 
    }); 
}; 

使用如下:

$('current_field_selector').focusNextInputField(); 
0

您是否嘗試過使用

$("input").trigger('keypress', e);

的解決方案嗎?
我發現有時候明確是最好的。 如果不工作,可能連

$("input").trigger('keypress', [{preventDefault:function(){},keyCode:9}]);

希望這會有所幫助。

相關問題