2013-04-20 14 views
7

Sul Definitive Trigger Keypress jQuery thread non c'è JSFiddle funzionante per la risposta, e il codice che c'è non funziona per me.Trigger Keypress con jQuery

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

Ecco il mio codice e qui è il mio violino http://jsfiddle.net/Z8adb/

Al clic, un M dovrebbe apparire in ingresso, come l'ingresso è dato fuoco e avere un keydown con la keyCode di 77 ("m") attivato su di esso.

Qualche idea?

MODIFICA: Il mio vero scopo è di attivare un tasto di scelta rapida "m" su un video Sublime per disattivare automaticamente il video. Questo è stato il mio primo passo per garantire che stia sparando correttamente la chiave "m", che sono con l'aiuto di Stack Overflow. Tuttavia, non riesco ancora a generare un evento a livello di programmazione sul video. Penso che questo sia solo un problema con Sublime Video, ma non ne sono sicuro, e le opinioni di chiunque su forzare pressioni e clic di tasti sarebbero impressionanti da sentire.

+0

WHAT è il problema. Il tuo keydown non viene attivato? – PSL

+0

Buon punto, lascia che modifichi la domanda per essere più chiara. –

+1

http://jsfiddle.net/M8RxB/ Non c'è niente di sbagliato nel codice visto che puoi vedere che l'evento sta funzionando, dovrai inserire il valore manualmente AFAIK. –

risposta

12

Utilizzando il trigger si sta solo attivando l'evento con un codice chiave ma non assegnando il valore alla casella di testo. Prova questo: - 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

Lo apprezzo, ma il problema è $ ('input'). Trigger (e) non ha nemmeno bisogno di essere lì in quell'istanza. Questa è una buona risposta però. g –

+0

Lasciate che vi chieda questo: pensate che il $ ("input"). keydown (function (e)) stia sparando correttamente? –

+1

Non ho visto alcun problema con il keydown .... Vedete qualcosa con il keydown keydown non sparato? – PSL

1

SublimeVideo è un player HTML5, corretta. Se è così, puoi disattivarlo usando una proprietà, giusto?

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

Sì l'ho già fatto, ma quello che volevo era in realtà averlo gestito tramite Sublime, perché la loro funzione di muto in realtà sposta il volume (e la GUI associata al volume) a 0, quindi ci vorrebbe molta roba UX I ' Devo fare fuori solo per attivare la funzione. –