15

私がこれを持っているとしましょう:

<textarea id="myarea">Hello</textarea>

おそらくtrigger()とキーコードを使用して、そのテキストエリアでバックスペースをトリガーするにはどうすればよいですか。バックスペースのコードは8です。そして、私はこれを探していません:

$('#myarea').val( $("myarea").val().slice(0,-1) );

実際にキーボードの「バックスペース」キーを押す人をシミュレートする必要があります。ありがとう

4

3 に答える 3

13

キーダウン イベントを作成できます。

var e = jQuery.Event("keydown", { keyCode: 20 });

次に、テキストエリアでトリガーします。

$("#myarea").trigger( e );

アップデート:

さらに調査とテストを行った後、このソリューションはHTML 要素での自然なキー押下イベントをシミュレートしないことに気付きました。このメソッドは keydown イベントをトリガーするだけで、ユーザーが要素に入ってそのキーを押すことは再現しません。

ユーザーがそのテキストボックスに入ってそのキーを押すことをシミュレートするには、ディスパッチイベントを作成する必要があります

ディスパッチ イベントもグローバルにサポートされていません。あなたの最善の策は、keydown イベントをトリガーしてから、意図したとおりにテキスト領域を更新することです。

于 2011-08-03T02:51:34.297 に答える
8

私はこれを見つけました:

http://forum.jquery.com/topic/simulating-keypress-events (回答番号 2)。

このようなものが機能するか、少なくともアイデアが得られるはずです。

<div id="hola"></div>

$(function(){
    var press = jQuery.Event("keyup");
    press.ctrlKey = false;
    press.which = 40;

    $('#hola').keyup(function(e){
        alert(e.which);
    })
   .trigger(press); // Trigger the event
});

デモ: http://jsfiddle.net/qtPcF/1/

于 2011-08-03T02:53:01.123 に答える