我已经阅读了所有关于这个问题的答案,但似乎没有一个解决方案有效。

此外,我得到的感觉,触发按键与特殊字符根本不起作用。有人能证明这是谁干的吗?


当前回答

对我来说,用这个工作…

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}]); 

其他回答

我用keyup做了。

$("#id input").trigger('keyup');

jQuery 1.6+稍微更简洁:

var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );

$('input').trigger(e);

(如果你不使用jQuery UI,请改用适当的键码。)

如果你需要考虑到当前的光标和文本选择…

这对我在Chrome上的AngularJS应用程序不起作用。正如Nadia在最初的评论中指出的那样,字符在输入字段中从来都是不可见的(至少,这是我的经验)。此外,前面的解决方案没有考虑输入字段中的当前文本选择。我不得不使用一个很棒的库jquery-selection。

我有一个自定义的屏幕数字键盘,填充多个输入字段。我不得不……

在focus上,保存lastFocus.element 在模糊,保存当前的文本选择(开始和停止) var pos = element.selection('getPos') lastFocus。Pos ={开始:Pos .start,结束:Pos .end} 当我按下键盘上的一个按钮时: lastFocus.element。select ('setPos', lastFocus.pos) lastFocus.element。select ('replace', {text: myKeyPadChar,插入符:'end'})

对我来说,用这个工作…

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}]); 

console.log( String.fromCharCode(event.charCode) );

我想不需要映射角色。