此代码似乎是唯一一个输出在Android设备上按下了哪个键码的代码:
var input_field = document.getElementById('photo-id');
input_field.addEventListener('textInput', function(e) {
var char = e.data;
var keyCode = char.charCodeAt(0);
return true;
});
我需要此函数之外的keyCode
的结果值。我尝试了return keyCode;
而不是return true;
,但这不起作用。
我怎样才能做到这一点?
编辑:详细解释。
我正在使用TagIt(http://aehlke.github.io/tag-it)并且我正在尝试修改函数this.tagInput.keydown(function(event) {
中的代码,该函数检查是否已按下逗号或空格以将单词分隔为标记。我不知道将它传递给这个函数或放在addEventListener
的位置有多么令人兴奋?就像我提到的,我只需要添加这个以识别Android设备密钥代码。
EDIT2:代码被剥离。
this.tagInput.keydown(function(event) { // function of the library that checks every keydown event
// my addition to check for Android keycode input:
try {
var last_key_code_pressed;
this.addEventListener('textInput', function(e) {
var char = e.data;
var kc = char.charCodeAt(0);
last_key_code_pressed = kc;
console.log(kc); // works to output keycode here but not outside
return true;
});
console.warn(last_key_code_pressed);
} catch(e) {
console.warn("error:" + e);
}
// need to get the keycode of the addEventListener HERE
/* here are if-else-conditions to check if comma,
enter or space is pressed (code of the mentioned library) */
答案 0 :(得分:2)
这当然不是唯一的方法,但您可以将keyCode分配给封闭范围内的变量。您还可以从事件处理程序中调用一个函数,并将其传递给keyCode并存储它。
第一种方法的例子:
var input_field = document.getElementById('photo-id');
var last_key_code_pressed;
input_field.addEventListener('textInput', function(e) {
var char = e.data;
var keyCode = char.charCodeAt(0);
last_key_code_pressed = keyCode;
return true;
});
修改的
一个工作示例(改为使用keydown事件):
var input_field = document.getElementById('photo-id');
var last_key_code_pressed;
input_field.addEventListener('textInput', function(e) {
var char = e.data;
var keyCode = char.charCodeAt(0);
last_key_code_pressed = keyCode;
return true;
});
var button = document.getElementById('last-kc');
button.addEventListener('click', function() {
console.log(last_key_code_pressed);
})
<input id="photo-id" />
<button id="last-kc" type="button">Last KeyCode</button>