使用jQuery触发按键事件

7

确定性触发按键的jQuery线程中,答案中没有可用的JSFiddle,而且那里的代码对我来说也不起作用。

$("button").click(function () {
    $("input").focus();
    var e = jQuery.Event("keydown");
    e.which = 77; // # Some key code value
    $("input").trigger(e);
})

这是我的代码,这是我的fiddle链接http://jsfiddle.net/Z8adb/ 点击时,应该在输入框中出现"M",因为输入框被聚焦并且有一个keycode为77(“m”)的keydown事件被触发。
有什么想法吗?
编辑:我真正的目的是通过触发Sublime Video上的“m”热键来以编程方式静音视频。 这是我的第一步,以确保我正确地触发了“m”键,Stack Overflow的帮助使我做到了这一点。 然而,我仍然无法在视频上以编程方式触发事件。 我认为这只是Sublime Video的问题,但我不确定,如果有人对强制按键和点击的看法会很棒。

什么问题?你的键盘按下事件没有被触发? - PSL
好的,让我编辑一下问题,使其更加清晰明了。 - Tommy Nicholas
1
http://jsfiddle.net/M8RxB/ 你的代码没有问题,正如你所看到的事件正在触发,你需要手动输入值。据我所知。 - Moby's Stunt Double
2个回答

12
使用触发器只是触发具有键码的事件,但不将值分配给文本框。 请尝试这个:- http://jsfiddle.net/PbHD2/

String.fromCharCode

$("button").click(function() {
     $("input").focus();
    var e = jQuery.Event("keydown");
    e.which = 77; // # Some key code value
    $("input").val(String.fromCharCode(e.which));
    $("input").trigger(e);
});
$('input').keydown(function(e){
   console.log('Yes keydown triggered. ' + e.which)
});

我很感激,但问题是在那种情况下 $('input').trigger(e) 甚至不需要出现。不过那是一个好答案。 - Tommy Nicholas
让我问你一下:您认为 $("input').keydown(function(e)) 正确触发了吗? - Tommy Nicholas
1
键盘按下事件没有任何问题... 你有看到键盘按下事件没有触发吗? - PSL
这个问题实际上是关于尝试在Sublime Video中的<video></video>标签中触发一个热键"m"的问题。它们没有一个"volume" API方法,所以我试图在视频播放之前自动触发"m"键来静音视频。我认为我正确地触发了"m",但它在视频上不起作用。 - Tommy Nicholas
这是你的问题所需的上下文。你应该在其中添加真正的目的。 - Moby's Stunt Double
同意。我已经解决了我的实际问题,但是对于我的更大目的,我仍然有兴趣听取人们关于强制点击事件的想法。 - Tommy Nicholas

1

SublimeVideo是一个HTML5播放器,对吗?如果是这样,你可以使用属性将其静音,是吗?

$("video#yourVideoTagId").prop("muted", true);

是的,我已经有了那个,但我想要做的实际上是通过Sublime来处理它,因为他们的静音功能实际上只是将音量(以及与音量相关的GUI)移动到0,所以这将使我需要做的许多UX工作变得简单,只需触发该函数即可。 - Tommy Nicholas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接