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

时间:2011-08-03 02:45:53

标签: javascript jquery triggers keycode backspace

说我有这个:

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

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

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

我需要模拟某人实际按下键盘上的“退格”键。 感谢

3 个答案:

答案 0 :(得分:10)

您可以创建一个keydown事件:

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

然后在你的textarea中触发它:

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

更新

在做了一些研究和测试之后,我意识到这个解决方案 NOT 在HTML元素上模拟自然按键事件。此方法仅触发keydown事件,它不会复制进入元素并按下该键的用户。

要模拟用户进入该文本框并按下该键,您必须创建dispatch event

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

答案 1 :(得分:6)

我发现了这个:

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/

答案 2 :(得分:1)

不应该强制js中的关键事件。请尝试模拟字符删除。

const start = textarea.selectionStart - 1;
const value = textarea.value;
const newValue = value.substr(0, start) + a.substr(start);
textarea.value = newValue;

或者,如果您只是想要事件,而是直接调用处理程序,而不是强制事件。这太苛刻了。