При повторном фокусе добавляются события blur и keydown
Есть код, смысл его в том, чтобы при фокусе происходила инициализация переменных и эти переменные использовались в дальнейшем для событий blur и keydown.
Код работает не совсем как надо. Если после blur делаем focus в тот же input, то при последующем вводе email события удваиваются, то есть вместо одного keydown происходит два, вместо одного blur - два. Как этого избежать?
$("#email").focus(function()
{
var t = 'test';
console.log("focus %s",t);
$(this).on(
{
blur: function()
{
console.log("blur %s",t);
},
keydown: function()
{
console.log("keydown %s",t);
}
});
});
|
sdaww,
Ставьте однократное событие - при возникновении которого - ставьте новое однократное - обработчик в отдельной функции вызываемой по событию http://jquery-docs.ru/Events/one/#typedatafn |
Изврат конечно, но такой код вроде работает:
$("#email").one(
{
'focus': function()
{
var t = 'test';
function ficus()
{
console.log("focus %s",t);
}
ficus();
$(this).on(
{
'focus': function()
{
ficus();
},
'blur': function()
{
console.log("blur %s",t);
},
'keydown': function()
{
console.log("keydown %s",t);
}
});
}
});
|
| Часовой пояс GMT +3, время: 06:13. |