我正在尝试使用jQuery检索插入到textfield / input中的字符。
我使用通常的:
var character = String.fromCharCode( e.keyCode || e.which );
方法,但是当我使用我刚注意到的不同键盘布局时,唯一的问题就出现了。
例如,在标准美国键盘上,它可以完美运行。在德语键盘上进行实例化,如果我将语言设置为英语 - 基本上将其设置为标准美国键盘,当我按下相当于:;'\,./[]=-
的字符时,我会得到我实际在键盘上看到的德语字符(尽管将当时的英语等价物添加到输入中。
示例:如果我console.log( character )
得到以下句子:
[]\';/.,
ÛݺÞܼ¾¿
我明显的问题是,我怎样才能确保获得真正的字符插入器?
答案 0 :(得分:18)
keypress事件与keyup和keydown事件不同,因为它包含实际按下的键。尝试使用它。请使用以下代码段进行检查:
$('body').keypress(function(e){
console.log('keypress', String.fromCharCode( e.which ));
});
$('body').keyup(function(e){
console.log('keyup', String.fromCharCode( e.which ));
});
答案 1 :(得分:6)
您可以做的是让角色出现在隐藏的文本框中并获取实际值。这样,您将获得字符。您当前正在传递密钥代码,就像它是字符代码一样。它们不一样。
(function() {
var input = $("<input>").appendTo('body') // an hidden input element
.css({ position: "absolute",
left: -500,
top: -500 });
$('body').bind({ keydown: function(e) {
input.focus(); // make characters appear in input element
},
keyup: function() {
var value = input.val(); // get value when key pressed
input.val(""); // reset value of input element
if(value) {
alert(value); // if there is a value, display it
}
}
});
})();