2009-04-30 31 views
6

如何發送特定keyCode的觸發按鍵例如:以編程方式使用JQuery的TextBox上的「9」事件?如何使用jQuery發送按鍵觸發器

這是我打算做的; 以編程方式將值輸入到TextBox,然後以編程方式觸發TextBox上的Tabkey以退出該字段。

我的代碼

$("#tags1").val("comp") // Works well 

$("#tags1").trigger("keypress",[9]); // Fails!! 

迦特

回答

6

jQuery的文件指出,它只會通過規範化的事件屬性=的jQuery.Event對象的屬性,這似乎不包括事件 - 具體數據。

我試過了,即使重複使用瀏覽器按鍵創建的事件對象,也無法將文本插入到文本框中,因此似乎不可能。

爲什麼你不能只改變文本框的值,並調用blur()來退出它? (或中心()你接下來要進入一個?)

3

你問不完全是,但使用的按鍵,這可能完成你想要的:

$("#tags1").blur(); 

甚至

$("#tags1").next().focus(); 
1

嘗試:

$("#tags1").val("comp").trigger("keypress",[9]); 

$("#tags1").val("comp").trigger("keypress", [{ 
    preventDefault:function(){}, 
    keyCode:9 
    }]); 
-1

試試這個:

$('textarea:input').live('keypress', function(e) { 
    if (e.keyCode == 9) { 
     e.preventDefault(); 

     // Press TAB to append a string (keeps the original TEXTAREA text). 
     $(this).append("TAB TAB TAB AFTER TEXTAREA TEXT"); 

     // Press TAB to append a string (keeps the original TEXTAREA text). 
     $(this).focus().prepend("TAB TAB TAB BEFORE TEXTAREA TEXT"); 

     // Press TAB to replace a all text inside TEXTAREA. 
     $(this).val("INSERT INTO TEXTAREA/REPLACE EXISTING TEXT"); 

    } 
}); 

如果您要添加文本 textarea的(通過活動光標 - 像CTRL + V),您可能需要使用"Tabby"(JS source code)(jQuery插件 - 254代碼行..!)。

您也可以在YUI editor中找到靈感,這將允許您在編輯器中添加TAB。

0

如果你想添加一個值到input/textarea然後觸發按鍵「enter」事件。

觸發像這樣

$('input').val(input_value).blur(); 
1

我創建了一個simple jQuery plugin它確實解決了這個問題。它使用jQuery UI的':tabbable'選擇器來查找下一個'tabbable'元素並選擇它。

實例:

// Simulate tab key 
$.tabNext();