私がこれを持っていると言う:
<textarea id="myarea">Hello</textarea>
おそらくtrigger()とキーコードを使用して、そのテキストエリアでバックスペースをトリガーするにはどうすればよいですか?バックスペースのコードは8です。そして私はこれを探していません:
$('#myarea').val( $("myarea").val().slice(0,-1) );
誰かが実際にキーボードの「バックスペース」キーを押すのをシミュレートする必要があります。ありがとう
キーダウンイベントを作成できます。
var e = jQuery.Event("keydown", { keyCode: 20 });
次に、textareaでトリガーします。
$("#myarea").trigger( e );
更新:
さらに調査とテストを行った後、このソリューションは[〜#〜] not [〜#〜]をシミュレートしていないことに気付きましたnaturalHTML要素のkeypressイベント。このメソッドはkeydownイベントをトリガーするだけで、ユーザーが要素に入ってそのキーを押すことを複製しません。
ユーザーがそのテキストボックスにアクセスしてそのキーを押すことをシミュレートするには、 ディスパッチイベント を作成する必要があります。
ディスパッチイベントもグローバルにサポートされていません。最善の策は、キーダウンイベントをトリガーしてから、意図したとおりにテキスト領域を更新することです。
私はこれを見つけました:
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
});
あなたすべきではありません jsで重要なイベントを強制しています。代わりに、文字の削除をシミュレートしてみてください。
const start = textarea.selectionStart - 1;
const value = textarea.value;
const newValue = value.substr(0, start) + a.substr(start);
textarea.value = newValue;
または、イベントだけが必要な場合は、イベントを強制するのではなく、ハンドラーを直接呼び出します。これはあまりにもハッキーです。