如何在addEventListener中获取值?

时间:2017-04-18 13:49:26

标签: javascript anonymous-function addeventlistener

此代码似乎是唯一一个输出在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) */

1 个答案:

答案 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>