Обновить (F5) не работает в диалоге jQuery - PullRequest
7 голосов
/ 05 января 2010

Я использую диалоговое окно jquery для отображения модального окна. Однако при нажатии F5 при открытом модале обновления не происходит. Есть идеи?

Интересное обновление:

Попробуйте это демо: http://jqueryui.com/demos/dialog/#modal-message Теперь, когда фокус находится на кнопке «ОК», тогда работает обновление (F5), однако, когда у кнопки нет фокуса, тогда ее нет.

Обновление 2

На самом деле мы можем просто добавить любой вид элемента управления в диалоговое окно, установить высоту и ширину равными 0 CSS и установить фокус на нем, чтобы заставить работать обновление. Это не лучшее решение, хотя. Я все еще пытаюсь заставить работать клавиатуру.

Обновление 3

На данный момент похоже следующее:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 

Ответы [ 4 ]

6 голосов
/ 05 января 2010

Кажется, это общая проблема, и я не нашел удовлетворительного ответа. Есть несколько похожих вопросов о переполнении стека, и лучший ответ, который я видел, - это захватить ключи и запустить действие самостоятельно (это было для нажатия кнопки enter, поэтому обновить f5 может быть сложнее). Я видел это сам в проект, над которым я тоже работаю.

Я подозреваю, что установка модального в false может помочь, но я еще не пробовал.

Edit:

Я нашел это в строке 539 файла ui.dialog.js:

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

Удаление клавиш и нажатий оттуда, казалось, позволяло работать обычным клавишам браузера. Теперь моя выглядит так:

events: $.map('focus,mousedown,mouseup,click'.split(','),

Я не знаю, какую функциональность я бы удалил, сделав это. Кажется, что используются только те события, которые находятся на линии 549:

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

Было бы неплохо исправить это в официальной версии, если это возможно.

0 голосов
/ 19 декабря 2010

Решение легко, вам просто нужно сосредоточиться на элементе формы вашего модального диалогового окна. Больше объяснений по этой ссылке :

0 голосов
/ 05 марта 2010

У меня были похожие проблемы, но я обнаружил, что вставил «return false;», что останавливало все остальные зарегистрированные ключи. Например, «return false» ниже остановит распознавание всех других клавиш (например, F5), кроме xxx и yyy.

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

Так что просто уберите "return false".

0 голосов
/ 05 января 2010

Диалоговое окно набирает клавишу F5, захватывая событие нажатия клавиши и останавливая его распространение для 'F5'?

Проверьте код для захвата нажатия клавиш такого рода. Это многое бы объяснило!

...