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

问题描述 投票:0回答:3

说我有这个:

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

我如何使用触发器()和按键代码触发该文本区域上的退格键。退格键的代码是 8。 我不是在寻找这个:

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

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

javascript jquery triggers keycode backspace
3个回答
15
投票

您可以创建一个按键事件:

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

然后在您的文本区域中触发它:

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

更新:

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

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

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


8
投票

我发现了这个:

http://forum.jquery.com/topic/simulated-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
投票

不应该在js中强制执行关键事件。尝试模拟角色删除。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.