0

我有一些代码结合了 .keypress().keyup()事件:

    $(this).on('keypress keyup', function (e) {
        var layout = 'undefined';
        if (e.type == "keypress") {
            // set layout
            layout = 'en';    
        } else {
            // use layout
            alert(layout);
        }
    });

我们知道顺序是.keydown() -> .keypress() -> .keyup()。但是在.keyup()事件变量layout上总是undefined.

我究竟做错了什么?

4

3 回答 3

2

layout变量移到事件函数之外 - 您正在将其重置为'undefined'每个事件。

var layout = 'undefined';
$(this).on('keypress keyup', function (e) {
    if (e.type == "keypress") {
        // set layout
        layout = 'en';    
    } else {
        // use layout
        alert(layout);
    }
});
于 2013-10-30T04:43:18.880 回答
1

使您的layout变量全局化

var layout = 'undefined';
$(this).on('keypress keyup', function (e) {
    if (e.type == "keypress") {
        // set layout
        layout = 'en';    
    } else {
        // use layout
        alert(layout);
    }
});
于 2013-10-30T04:44:44.963 回答
1

试试这个,

HTML

<input />

脚本

 var layout = 'undefined';
 $('input').on('keypress keyup', function (e) {
     if (e.type == "keypress") {
         // set layout
         layout = 'en';
     } else {
         // use layout
         alert(layout);
     }
 });

演示

于 2013-10-30T04:45:16.977 回答