2013-04-20 108 views
7

Definitive Trigger Keypress jQuery thread上没有可用的JSFiddle作为答案,并且那里的代码对我无效。使用jQuery触发按键

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

有我的代码,这里是我的小提琴 http://jsfiddle.net/Z8adb/

点击之后,一个M应该出现在输入,作为输入提供焦点,并具有77(“M”键代码在keyDown )触发它。

任何想法?

编辑:我真正的目的是为了在Sublime Video上触发一个“m”热键以便以编程方式静音视频。这是我的第一步,确保我正确地开启了“m”键,这是我在Stack Overflow的帮助下完成的。但是,我仍然无法获得一个事件在视频上以编程方式触发。我认为这只是Sublime Video的一个问题,但我不确定,任何人对强制按键和点击的看法都非常棒。

+0

是什么问题。你的keydown没有被触发? – PSL 2013-04-20 16:22:45

+0

好点,让我编辑问题更加清晰。 – 2013-04-20 16:24:48

+1

http://jsfiddle.net/M8RxB/您的代码没有问题,因为您可以看到事件正在触发,您将不​​得不手动输入AFAIK值。 – 2013-04-20 16:27:05

回答

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

我明白,但问题是$('input')。触发器(e)甚至不需要在那里。虽然这是一个很好的答案。 g – 2013-04-20 16:29:21

+0

让我问你:你认为$(“input”)。keydown(function(e))是否正确触发? – 2013-04-20 16:30:05

+1

看不到任何关于keydown的问题....你是否看到任何与keydown没有发射? – PSL 2013-04-20 16:36:42

1

SublimeVideo是HTML5播放器,正确的。如果是这样,你可以通过使用属性来使其静音,对吧?

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

是的,我已经有了,但我想要做的事实际上是通过Sublime来处理它,因为它们的静音功能实际上只是将音量(和与音量相关的GUI)移动到0,所以它会花费很多UX的东西, d必须完成它才能触发该功能。 – 2013-04-27 18:10:25