Reputation: 806
I have some code where i combine .keypress() and .keyup() events:
$(this).on('keypress keyup', function (e) {
var layout = 'undefined';
if (e.type == "keypress") {
// set layout
layout = 'en';
} else {
// use layout
alert(layout);
}
});
As we know the order is .keydown() -> .keypress() -> .keyup(). But on .keyup() event variable layout
is always undefined
.
What am i doing wrong?
Upvotes: 0
Views: 1815
Reputation: 40639
Try this,
HTML
<input />
SCRIPT
var layout = 'undefined';
$('input').on('keypress keyup', function (e) {
if (e.type == "keypress") {
// set layout
layout = 'en';
} else {
// use layout
alert(layout);
}
});
Upvotes: 1
Reputation: 9947
make your layout
variable global
var layout = 'undefined';
$(this).on('keypress keyup', function (e) {
if (e.type == "keypress") {
// set layout
layout = 'en';
} else {
// use layout
alert(layout);
}
});
Upvotes: 1
Reputation: 1868
Move the layout
variable outside the event function - you are resetting it to 'undefined'
every event.
var layout = 'undefined';
$(this).on('keypress keyup', function (e) {
if (e.type == "keypress") {
// set layout
layout = 'en';
} else {
// use layout
alert(layout);
}
});
Upvotes: 2