2013-04-20 8 views
7

Auf der Definitive Trigger Keypress jQuery thread gibt es keine funktionierende JSFiddle für die Antwort, und der Code, der dort ist, funktioniert nicht für mich.Trigger Keypress mit jQuery

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

Es ist mein Code und hier ist meine Geige http://jsfiddle.net/Z8adb/

Auf klicken, wird ein M im Eingabe erscheinen soll, als der Eingabefokus gegeben ist und eine keydown mit dem keyCode von 77 („m“ mit) darauf ausgelöst.

Irgendwelche Ideen?

EDIT: Mein wahrer Zweck ist es, einen "m" Hotkey auf einem Sublime Video auszulösen, um das Video programmgesteuert stumm zu schalten. Dies war mein erster Schritt, um sicherzustellen, dass ich den "m" -Schlüssel richtig ausgelöst habe, was ich mit Hilfe von Stack Overflow getan habe. Ich bin jedoch immer noch nicht in der Lage, eine Veranstaltung programmgesteuert auf dem Video zu starten. Ich denke, das ist nur ein Problem mit Sublime Video, aber ich bin mir nicht sicher, und jemandes Ansichten über das Erzwingen von Tastendrücken und Klicks wäre großartig zu hören.

+0

WHat ist das Problem. Dein Keydown wird nicht ausgelöst? – PSL

+0

Guter Punkt, lassen Sie mich die Frage zu klären, um klarer zu sein. –

+1

http://jsfiddle.net/M8RxB/ Es ist nichts falsch mit Ihrem Code, wie Sie sehen können, das Ereignis feuert, müssen Sie den Wert manuell AFAIK eingeben. –

Antwort

12

Mit Trigger lösen Sie nur das Ereignis mit einem Schlüsselcode aus, aber nicht den Wert dem Textfeld zuweisen. Versuchen Sie folgendes: - 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

Ich schätze das, aber das Problem ist das $ ('input'). Trigger (e) muss nicht einmal da sein. Das ist eine gute Antwort. g –

+0

Lass mich dich das fragen: glaubst du, dass die $ ("input '). keydown (function (e)) richtig feuert? –

+1

Konnte keine Probleme mit dem Keydown sehen .... Siehst du irgendwas mit dem keydown nicht feuern? – PSL

1

SublimeVideo ist ein HTML5-Player, zu korrigieren. Wenn ja, können Sie es mit einer Eigenschaft stummschalten, oder?

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

Yep I habe das schon, aber was ich wollte, war, dass es tatsächlich über Sublime behandelt wurde, weil ihre Stumm-Funktion eigentlich nur die Lautstärke (und die mit der Lautstärke verbundene GUI) auf 0 verschiebt, also würde es eine Menge UX-Sachen brauchen. Ich muss es tun, um nur die Funktion auszulösen. –