Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS/jQuery中触发keypress/keydown/keyup事件?_Javascript_Jquery_Dom Events - Fatal编程技术网

Javascript 在JS/jQuery中触发keypress/keydown/keyup事件?

Javascript 在JS/jQuery中触发keypress/keydown/keyup事件?,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,在JS和/或jQuery中,模拟用户在文本输入框中输入文本的最佳方式是什么 我不想在输入框中实际输入文本,我只想触发所有通常由用户在输入框中键入信息触发的事件处理程序。这意味着聚焦、向下键、按键、向上键和模糊。我想 那么如何实现这一点呢?您可以通过直接调用来触发任何事件,如下所示: $(function() { $('item').keydown(); $('item').keypress(); $('item').keyup(); $('item').blur(

在JS和/或jQuery中,模拟用户在文本输入框中输入文本的最佳方式是什么

我不想在输入框中实际输入文本,我只想触发所有通常由用户在输入框中键入信息触发的事件处理程序。这意味着聚焦、向下键、按键、向上键和模糊。我想


那么如何实现这一点呢?

您可以通过直接调用来触发任何事件,如下所示:

$(function() {
    $('item').keydown();
    $('item').keypress();
    $('item').keyup();
    $('item').blur();
});
$(function() {
    var e = $.Event('keypress');
    e.which = 65; // Character 'A'
    $('item').trigger(e);
});
这和你想做的一样吗

您可能还应该触发
.focus()
和潜在的
.change()

如果要使用特定键触发键事件,可以这样做:

$(function() {
    $('item').keydown();
    $('item').keypress();
    $('item').keyup();
    $('item').blur();
});
$(function() {
    var e = $.Event('keypress');
    e.which = 65; // Character 'A'
    $('item').trigger(e);
});
这里有一些关于按键事件的有趣讨论:,特别是关于跨浏览器与.which属性的兼容性。

要触发enter按键,我必须修改@ebynum响应,特别是使用keyCode属性

e = $.Event('keyup');
e.keyCode= 13; // enter
$('input').trigger(e);
您现在可以执行以下操作:

var e = $.Event("keydown", {keyCode: 64});

下面是一个触发任何事件的普通js示例:

function triggerEvent(el, type){
if ('createEvent' in document) {
        // modern browsers, IE9+
        var e = document.createEvent('HTMLEvents');
        e.initEvent(type, false, true);
        el.dispatchEvent(e);
    } else {
        // IE 8
        var e = document.createEventObject();
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
    }
}

你可以安排这样的活动

el.dispatchEvent(new Event('focus'));
el.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));

首先,我要说的是,来自Sionnach733的样本工作得非常完美。一些用户抱怨缺少实际的例子。这是我的两分钱。使用此网站时,我一直在进行鼠标点击模拟:。您可以打开任何视频并尝试运行此代码。它执行切换到下一个视频

function triggerEvent(el, type, keyCode) {
    if ('createEvent' in document) {
            // modern browsers, IE9+
            var e = document.createEvent('HTMLEvents');
            e.keyCode = keyCode;
            e.initEvent(type, false, true);
            el.dispatchEvent(e);
    } else {
        // IE 8
        var e = document.createEventObject();
        e.keyCode = keyCode;
        e.eventType = type;
        el.fireEvent('on'+e.eventType, e);
    }
}

var nextButton = document.getElementsByClassName('icon-player-next')[0];
triggerEvent(nextButton, 'keyup', 13); // simulate mouse/enter key press

您可以通过:
EventTarget.dispatchEvent(event)
并将新的KeyboardEvent作为事件传递来实现这一点

例如:
element.dispatchEvent(新键盘事件('keypress',{'key':'a'))

工作示例:

//获取有问题的元素
常量输入=document.getElementsByTagName(“输入”)[0];
//关注输入元素
input.focus();
//将事件侦听器添加到输入元素
input.addEventListener('按键',(事件)=>{
日志(“您已按下键:”,event.key);
});
input.addEventListener('keydown',(事件)=>{
log(`key:${event.key}已被按下`);
});
input.addEventListener('keyup',(事件)=>{
log(`key:${event.key}已被释放`);
});
//调度键盘事件
dispatchEvent(newkeyboardevent('keypress',{'key':'h'));
dispatchEvent(newkeyboardevent('keydown',{'key':'e');
dispatchEvent(newkeyboardevent('keyup',{'key':'y'))

我想提请您注意,在jQuery插件中定义了侦听器的特定上下文中,唯一成功模拟按键事件(最终被该侦听器捕获)的方法是使用setTimeout()。 e、 g


$(“#txtName”).keypress()
的任何使用都被忽略,尽管放在
.ready()函数的末尾。无论如何,没有异步创建任何特定的DOM补充。

用于将typescript转换为KeyboardEventInit,并提供正确的keyCode整数

const event = new KeyboardEvent("keydown", {
          keyCode: 38,
        } as KeyboardEventInit);

keydown
事件未被捕获,或者我在这里做错了什么?fiddle.jshell.net/巴勒斯坦/8d8J9@cloak:它有效。查看我在这里的评论,了解修复asp.net控件的完整选择器:如果使用Ajax,请确保在dom中插入任何内容后调用它。您能提供一些使用示例吗?如何使用您的函数发送密钥码?此帖子的源代码可以在以下链接中找到,其中包括文档:或
$('item').trigger('keypress',{which:'a'.charCodeAt(0)})
@ebynum你能用Javascript写一些代码吗(没有jquery)。如果你需要Ctrl:
ctrlKey:true
,还有:
shiftKey
altKey
el.dispatchEvent(新事件('keypress',{keyCode:'a'}))
@Cuzox为什么不使用KeyboardEvent?它会自动填充shiftKey之类的值,这是正确的方法。另外,您在keyCode中放入了一个字符串,这是错误的(这将导致快捷方式
Ctrl+F
)对象与界面不匹配代码片段在Chrome上不起作用-你知道为什么吗。。?