首页 > 解决方案 > 如何使用事件模拟完整的用户输入

问题描述

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

<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);
});

标签: javascriptjqueryeventsclickmouseevent

解决方案


为此,您将使用 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来模拟人类延迟。祝你好运!


推荐阅读