Как предотвратить размытие() при нажатии ссылки в jQuery?
У меня есть:
<input type="text" />
и
$('input').blur(function(){
alert('stay focused!');
});
Я хочу, чтобы функция размытия работала, когда я "размываю", нажимая на элемент привязки.
т.е. если я перейду на другой вход, нажмите где-нибудь на странице и т.д. Я хочу, чтобы размытие было срабатывает, но если я нажму ссылку, я не хочу, чтобы она срабатывала.
Это легко достижимо или мне нужно взломать делегаты и семафоры?
Спасибо
Ответы
Ответ 1
Мне тоже пришлось решить эту проблему сегодня и сегодня. Я обнаружил, что событие mousedown срабатывает перед событием размытия, поэтому все, что вам нужно сделать, это установить переменную, указывающую на то, что событие mousedown произошло первым, а затем соответствующим образом управлять вашим событием размывания, если это так.
var mousedownHappened = false;
$('input').blur(function() {
if(mousedownHappened) // cancel the blur event
{
alert('stay focused!');
$('input').focus();
mousedownHappened = false;
}
else // blur event is okay
{
// Do stuff...
}
});
$('a').mousedown(function() {
mousedownHappened = true;
});
Надеюсь, это поможет вам!
Ответ 2
Если вы хотите сохранить курсор в своем положении в элементе contenteditable
, просто:
$('button').mousedown(function(){return false;});
Ответ 3
Задержка размытия немного. Если зритель нажимает ссылку на другую страницу, страница должна измениться до того, как этот код получит шанс запустить:
$('input').blur(function(){
setTimeout(function() {alert('stay focused!');}, 1000);
});
Вы можете поэкспериментировать с тем, какое значение задержки для таймаута кажется подходящим.