0

ボタンとして機能するdivがあります。ボタンがクリックされたら、キーを押すことをシミュレートしたいと思います。Stackoverflowの他の場所では、人々は使用を提案していますjQuery.Event("keydown");が、提案はすべて、ではなく.trigger()ボタンへのバインドを使用しています.click。したがって、私のサンプルコードは次のようになります。

var press = jQuery.Event("keydown");
press.which = 69; // # The 'e' key code value
press.keyCode = 69;

$('#btn').click( function() {
    $('#testInput').focus();
    $(this).trigger(press);
    console.info(press);
});

JSFiddleでダミーの例を設定しました:http: //jsfiddle.net/ruzel/WsAbS/

最終的には、フォーム要素にキープレスを入力するのではなく、イベントをドキュメントのキープレスとして登録して、MelonJSゲームでイベントを取得できるようにします。

更新:キーボード以外でキーを押すと、セキュリティ上の理由からブラウザで無視される可能性が高いようです。テキスト入力を更新するために、この非常に優れたJqueryプラグインがトリックを実行します:http://bililite.com/blog/2011/01/23/improved-sendkeys/

MelonJSの場合の解決策を探してここに来る人は、次のようにMelonJSのme.inputオブジェクトを使用するのが最善です。

$('#btn').mousedown(function() {
    me.input.triggerKeyEvent(me.input.KEY.E, true);
});

$('#btn').mouseup(function() {
    me.input.triggerKeyEvent(me.input.KEY.E, false);
});
4

2 に答える 2

1

(タイトルが示すように)仮想キーボードが必要な場合は、これを使用できます。

于 2013-03-25T20:50:56.433 に答える
1

理由はわかりませんが、これでイベントが正しくトリガーされても、入力が文字で埋められません。

コードを変更して、ドキュメントが実際にキープレスイベントを受信して​​いることを示します$(document).trigger(p)

試してみてください:http: //jsfiddle.net/WsAbS/3/

var press = jQuery.Event("keydown");
press.which = 69; // # Some key code value
press.keyCode = 69;
press.target = $('#testInput');


$(document).on('keydown', function(event) {
    alert(event.keyCode);
});

$('#btn').click( function() {
    $(document).trigger(press);
});

これは、MelonJSゲームがキーを押すという最終目標には十分なはずだと思います。

于 2013-03-25T20:52:16.450 に答える