0

jquery でキーボード イベントをシミュレートしようとしています。私が欲しいのは、ボタンをクリックしたときに、文字がテキストエリアに表示されるようにすることです。アクションを単純な追加ではなく、キーボード シミュレーションにする必要があります。私はウェブ上で可能なすべての解決策を試しましたが、うまくいきませんでした。

これが私のHTML/JS/Jqueryコードです:

<html>
    <head></head>
    <body>
        <script type='text/javascript' src='jquery-1.9.1.min.js'></script>
        <input type='text' id="input"></input>
        <script type='text/javascript'>
            function simulateKeyPress() {
                document.getElementById("text").focus();
                var e = $.Event("keypress");
                e.which = 97;
                $("input").trigger(e);
            }
        </script>
        <br/>
        <button id="button" onclick='simulateKeyPress()'>Press Me</button>
    </body>
</html>

ご覧のとおり、ボタンをクリックすると、テキスト要素のみにフォーカスが移りますが、文字は表示されません。何かアイデアはありますか?

私は十分に明確ではなかったようです。別のサンプルを次に示します。MouseTrapライブラリを使用してキーボード イベントをキャプチャしています。これが私のコードです。

<html>
<header>
<title>test</title>
</header>
<script type='text/javascript' src='MouseTrap.js'></script>
<script type='text/javascript' src='jquery-1.9.1.min.js'></script>

<body>
<input type='text' class="mousetrap" id="input"></input>
<script type='text/javascript'>
Mousetrap.bind('4',  function(){alert("you pressed 4" );});
function simulateKeyPress(character) {
        document.getElementById("input").focus();
        var input = $('#input');
        input.val(input.val() + character);
}
</script>
<br/>
<button type="button" onclick='simulateKeyPress(4)'>Press Me</button>
</body>
</html>

このコードでは、キーボードで「4」を押すたびに警告ボックスが表示されます。ボタンをクリックすると、同じイベントが作成されるだけです。アイデア?

4

4 に答える 4

1

キープレスをシミュレートする 1 つのソリューションを次に示します。

var input = $('#input');

$('#button').click(function(){
    // Add a character to the input
    input.val(input.val() + 'x');
    // Trigger the keypress event
    input.keypress();
});

// Check if it work
input.on('keypress', function(){
    alert('key pressed!');
});

これはjsfiddle デモです。

于 2013-05-20T09:09:20.177 に答える
0

テキストエリアに手動で文字を追加しないと、これを達成することはできないようです。

@HighKickX と @claustrofob が書いた回答は、特定のキーが押されたかのようにイベント ハンドラーをトリガーするだけで、キーボードでキーが押されたときに発生するように実際にそのキーを押すことはありません (おそらくセキュリティ上の理由による)。

イベントのみが発生し、実際にはキーが押されていないため、テキストエリアにはその文字が自動的に追加されません。

于 2013-08-04T08:55:06.200 に答える