如何在文本字段上触发退格?

odl*_*dle 14 javascript jquery triggers keycode backspace

说我有这个:

<textarea id="myarea">Hello</textarea>
Run Code Online (Sandbox Code Playgroud)

我如何使用trigger()和键代码在该textarea上触发退格.退格的代码是8.我不是在寻找这个:

$('#myarea').val( $("myarea").val().slice(0,-1) );
Run Code Online (Sandbox Code Playgroud)

我需要模拟某人实际按下键盘上的"退格"键.谢谢

rkw*_*rkw 10

您可以创建一个keydown事件:

var e = jQuery.Event("keydown", { keyCode: 20 });
Run Code Online (Sandbox Code Playgroud)

然后在你的textarea中触发它:

$("#myarea").trigger( e );
Run Code Online (Sandbox Code Playgroud)

更新:

做一些更多的研究和测试后,我意识到,这个解决方案确实不是模仿自然的HTML元素上的按键事件.此方法仅触发keydown事件,它不会复制进入元素并按下该键的用户.

要模拟用户进入该文本框并按下该键,您必须创建一个调度事件

调度事件也不是全局支持的.您最好的选择是触发keydown事件,然后按预期更新文本区域.


Jos*_*ian 6

我找到了这个:

http://forum.jquery.com/topic/simulating-keypress-events(答案编号2).

这样的事情应该有用,或者至少给你一个想法:

<div id="hola"></div>
Run Code Online (Sandbox Code Playgroud)

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

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

演示:http://jsfiddle.net/qtPcF/1/