我已经阅读了所有关于这个问题的答案,但似乎没有一个解决方案有效。
此外,我得到的感觉,触发按键与特殊字符根本不起作用。有人能证明这是谁干的吗?
我已经阅读了所有关于这个问题的答案,但似乎没有一个解决方案有效。
此外,我得到的感觉,触发按键与特殊字符根本不起作用。有人能证明这是谁干的吗?
当前回答
对我来说,用这个工作…
var e2key = function(e) {
if (!e) return '';
var event2key = {
'96':'0', '97':'1', '98':'2', '99':'3', '100':'4', '101':'5', '102':'6', '103':'7', '104':'8', '105':'9', // Chiffres clavier num
'48':'m0', '49':'m1', '50':'m2', '51':'m3', '52':'m4', '53':'m5', '54':'m6', '55':'m7', '56':'m8', '57':'m9', // Chiffres caracteres speciaux
'65':'a', '66':'b', '67':'c', '68':'d', '69':'e', '70':'f', '71':'g', '72':'h', '73':'i', '74':'j', '75':'k', '76':'l', '77':'m', '78':'n', '79':'o', '80':'p', '81':'q', '82':'r', '83':'s', '84':'t', '85':'u', '86':'v', '87':'w', '88':'x', '89':'y', '90':'z', // Alphabet
'37':'left', '39':'right', '38':'up', '40':'down', '13':'enter', '27':'esc', '32':'space', '107':'+', '109':'-', '33':'pageUp', '34':'pageDown' // KEYCODES
};
return event2key[(e.which || e.keyCode)];
};
var page5Key = function(e, customKey) {
if (e) e.preventDefault();
switch(e2key(customKey || e)) {
case 'left': /*...*/ break;
case 'right': /*...*/ break;
}
};
$(document).bind('keyup', page5Key);
$(document).trigger('keyup', [{preventDefault:function(){},keyCode:37}]);
其他回答
如果你想触发keypress或keydown事件,那么你需要做的是:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
我用keyup做了。
$("#id input").trigger('keyup');
如果你也在使用jQuery UI,你可以这样做:
var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);
console.log( String.fromCharCode(event.charCode) );
我想不需要映射角色。
真正的答案必须包括keyCode:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);
尽管jQuery的网站上说which和keyCode是标准化的,但它们是非常严重的错误。对e.which和e.keyCode进行标准的跨浏览器检查总是最安全的,在本例中只定义两者。