При повторном фокусе добавляются события 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, время: 00:09. |