Я пробовал preventDefault()
, но у меня не было успеха. Есть что-то, что мне не хватает?
Я попытался бы отключить его по всему миру, если возможно (например, зарегистрировать события на window
)
Я пробовал preventDefault()
, но у меня не было успеха. Есть что-то, что мне не хватает?
Я попытался бы отключить его по всему миру, если возможно (например, зарегистрировать события на window
)
Кажется, что нет способа остановить событие от запуска. Единственной альтернативой, по-видимому, является временное удаление атрибутов accesskey, пока вы не хотите, чтобы они работали. То, что jQuery UI должен делать для модальных диалогов.
Вот код из этого потока:
$("#boxA-dialog").dialog({
autoOpen: false,
modal: true,
height: 400,
width: 300,
open: function(event, ui) {
ak = $('[accesskey]').each(function() {
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
})
},
close: function(event, ui) {
ak.each(function() {
$(this).attr('accesskey', $(this).data('ak'))
})
}
});
Как вы можете видеть, что он сохраняет атрибуты accesskey для данных jQuery перед их удалением:
$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
а затем восстановить их из данных:
$(this).attr('accesskey', $(this).data('ak'))
Меня бы заинтересовало решение, которое фактически предотвращает событие, а не использует этот обходной путь.
Если я правильно понимаю вашу проблему, вы можете попробовать это.
$('[accesskey*=]').focus(function(e) {
// disable accesskey functionality
});
$('[accesskey*=]').blur(function(e) {
// reenable accesskey functionality
});
Используя предыдущий ответ, вы можете использовать этот трюк, чтобы "удалить" все параметры "accesskey" со страницы.
$('[accesskey*=]').attr('accesskey','');
Просто установите для всех страниц доступа на странице.