如何用事件模拟完整的用户输入

How to simulate complete user input with events

我需要在输入字段中模拟用户输入:

<input type="text" id="name">

应手动触发以下事件:

mousedown > focus > mouseup > click > keydown > keypress > change > blur

代码显示在这里

如果我使用此代码,它们应该会被检测到:

var element = document.getElementById('name');

$(element).on('mousedown focus mouseup click keydown keypress change blur', function(e){
    console.log(e);
});

更新文件(未检测到,没有控制台日志..):

$("#name").trigger("mousedown");
$("#name").trigger("focus");
$("#name").trigger("mouseup");
$("#name").trigger("click");
$("#name").trigger("keydown");
$("#name").trigger("keypress");
$("#name").trigger("change");
$("#name").trigger("blur");

var element = document.getElementById('name');

$(element).on('mousedown focus mouseup click keydown keypress change blur', function(e){
    console.log(e);
});

您将为此使用 jQuery 的 trigger。所以,如果你想按照你描述的顺序模拟事件:

$("#name").trigger("mousedown");
$("#name").trigger("focus");
$("#name").trigger("mouseup");
$("#name").trigger("click");
$("#name").trigger("keydown");
$("#name").trigger("keypress");
$("#name").trigger("change");
$("#name").trigger("blur");

如果你想真正模拟用户,你也可以使用一些 setTimeout 来模拟人为延迟。祝你好运!

您可以使用触发器 jquery 函数来模拟和触发任何事件。

试试这个 --

添加Jquery插件

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

<input type="text" id="name">

//var element = document.getElementById('name');

$("input").trigger("mousedown");
$("input").trigger("focus");
$("input").trigger("mouseup");
$("input").trigger("click");
$("input").trigger("keydown");
$("input").trigger("keypress");
$("input").trigger("change");
$("input").trigger("blur");