Строго говоря, вы не можете делать то, что хотите, потому что событие blur
срабатывает раньше, чем ваш обработчик кликов.
Предложение Димитара об отключении события при наведении курсора отлично работает для пользователей мыши, но не позволяет пользователям запускать кнопку с помощью клавиатуры.
Один из вариантов (но немного хакерский) - ввести небольшую задержку в обработчик событий blur
и использовать флаг переменной для управления срабатыванием события (может потребоваться настроить задержку, чтобы она была незаметной, но еще достаточно долго для ваших целей:
var disableBlurMethod = false;
$('field').addEvents ({
'focus' : function() { // do some stuff }
'blur' : function() {
(function() {
if (!disableBlurMethod) {
// do some stuff
}
}).delay(50);
}
});
$('shinyButton').addEvent('click', function() {
disableBlurMethod = true;
// do seriously cool stuff
if (finishedDoingSeriouslyCoolStuff) {
disableBlurMethod = false;
$('field').focus(); // return focus to input field
}
}