如何在具有特定文本的文本区域中手动触发粘贴事件

How to manually trigger a paste event in a text area with specific text

本文关键字:文本 事件 区域      更新时间:2023-09-26

我试图用jQuery触发textarea中的粘贴事件,但这个主题对我来说很新。

我已经看到了如何手动触发一个keydown事件,模拟按下一个特定的键,像这样:

var e = $.Event("keydown")
e.which = 50
$('#textarea1').trigger(e)

但是我如何用提供的文本字符串手动触发粘贴事件,有效地模拟Ctrl+V或右键单击>粘贴字符串,如"Foobar"?

我试图简单地设置textarea的值,但这并没有触发粘贴事件。

编辑:

我也试过这个(模拟Ctrl+V),但没有运气(ref):

e = $.Event("keydown");        
e.which = 86; // 'V' key
e.ctrlKey = true;
$("input").trigger(e);

我知道这是个老问题,但你的思路是对的。

要使用jQuery手动触发Paste事件,需要使用 Paste 事件类型,例如:

const e = $.Event('paste');
$('#textarea').val('some text').trigger(e);

或:

$('#textarea').val('some text').trigger('paste');

您可以尝试以下解决方案:

$('body').on('paste',function(e) {
    e.preventDefault();
    var text = (e.originalEvent || e).clipboardData.getData('text/plain');
    alert(text);
});