2013-04-20 99 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