2009-04-30 2 views
6

特定のkeyCodeのトリガーキー押下を送信するにはどうすればよいですか?プログラムでJQueryを使ってTextBox上の "9"イベント?JQueryを使用してキー押下トリガーを送信する方法

これは私がやろうとしていることです。 テキストボックスに値をプログラムで入力し、テキストボックスのタブキーをプログラムでトリガーしてフィールドを終了します。

私のコード

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

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

ガテ

答えて

6

jQueryのドキュメントは、それが唯一の正規化されたイベントが含まれていないようjQuery.Eventオブジェクトのプロパティを、属性=合格だろうと述べていますevent-特定のデータ。

ブラウザのキー入力が作成したイベントオブジェクトを再利用しても、テキストボックスにテキストを挿入することはできませんでしたので、可能ではないようです。

テキストボックスの値を変更してblur()を呼び出して終了するのはなぜですか? (または、フォーカス()を使用すると、次に入力したいものに?)

3

ないあなたが尋ねまさに、代わりにキー入力を使用しての、これはあなたが望むものを達成かもしれません:

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

あるいは

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

試してみてください。

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

または

jQueryプラグイン(、あなたは "Tabby" (JS source codeを使用する場合があります) - あなたは TEXTAREA内のテキスト を追加したい場合は(CTRL + Vなどのアクティブカーソルにより)

$('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"); 

    } 
}); 

- :

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

はこれを試してみてください254コード行..!)。

また、YUI editorでインスピレーションを得て、エディター内にTABを追加することもできます。

0

入力/テキストエリアに値を追加する場合は、キーを押しながら「enter」イベントを発生させます。この

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

よう

トリガそれは私がこの問題を解決しsimple jQuery pluginを作成しました。 jQuery UIの ':tabbable'セレクタを使用して、次の 'tabbable'要素を見つけて選択します。

使用例:

// Simulate tab key 
$.tabNext(); 
関連する問題