【问题标题】:Trigger Keypress with jQuery使用 jQuery 触发按键
【发布时间】:2013-04-13 21:29:06
【问题描述】:

Definitive Trigger Keypress jQuery thread 上,没有可用的 JSFiddle 作为答案,并且那里的代码对我不起作用。

$("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,因为输入已获得焦点并触发了 keyCode 为 77(“m”)的 keydown。

有什么想法吗?

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

【问题讨论】:

  • 这是什么问题。你的 keydown 没有被触发?
  • 好点,让我编辑问题更清楚。
  • jsfiddle.net/M8RxB 您的代码没有任何问题,因为您可以看到事件正在触发,您必须手动输入值 AFAIK。

标签: jquery keypress


【解决方案1】:

使用触发器,您只是使用键码触发事件,而不是将值分配给文本框。试试这个:- 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) 在那种情况下甚至不需要在那里。这是一个很好的答案。 g
  • 让我问你这个问题:你认为 $("input').keydown(function(e)) 是否正确触发?
  • 看不到任何与 keydown 相关的问题...。您是否看到 keydown 没有触发的任何问题?
  • 这个问题实际上是指在 Sublime Video 的 标签中保存的视频上尝试用“m”触发热键。他们没有“音量”API 方法,所以我试图在视频播放之前自动触发“m”键以使视频静音。我认为我正确触发了“m”,但它在视频上不起作用。
  • 这是您的问题中需要的那种上下文。您应该为其添加真正的目的。
【解决方案2】:

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

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

【讨论】:

  • 是的,我已经有了,但我想做的实际上是通过 Sublime 处理它,因为它们的静音功能实际上只是将音量(以及与音量相关的 GUI)移动到 0,所以它会花费很多我必须做的UX东西才能触发该功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多