переключатель не выбран в диалоговом окне jquery в вызовах ajax - PullRequest
2 голосов
/ 03 февраля 2012

У меня проблема здесь. У меня есть модальный диалог jquery, в котором у меня есть 2 переключателя. В моем коде у меня есть обработчики jQuery ajaxStart и ajaxStop для проверки Ajax-запросов (у меня также есть другое диалоговое окно jquery для отображения сообщения Loading ... или чего-то еще, когда выполняется Ajax-запрос). Когда я выбираю каждую радиокнопку, делается запрос ajax. У меня проблема в том, что из-за событий ajax (ajaxStart, ajaxStop), когда я нажимаю на переключатели, они не выбираются (хотя я получаю правильное значение переключателя). Есть идеи, что может вызвать это?

Вы можете увидеть иллюстрацию того, что я имею в виду с этим jsfiddle

Спасибо

1 Ответ

0 голосов
/ 03 февраля 2012

Кажется, проблема связана с параметром modal: true диалогового окна #ajax-dialog. Если вы установите опцию в false, она будет работать как положено. Обновление до последней версии jquery и jquery ui, похоже, не решило проблему.


Раствор 1

Установите модальную опцию на false.

$('#ajax-dialog').dialog({
    autoOpen: false,
    modal: false, // set to false
    title: 'Loading...'
});

DEMO


Решение 2

Вы можете использовать плагин BlockUI , который позволяет блокировать всю страницу или определенный элемент. он работает, показывая оверлейный элемент div (поверх страницы или элемента), запрещающий любое взаимодействие с основным содержимым. Вы можете отобразить сообщение и настроить внешний вид.

Блокировка содержимого диалога (с помощью переключателей):

$("#ajax-dialog").ajaxStart(function() {
    $('#gender-dialog').block({ 
            message: '<h1>Loading...</h1>', 
            css: { border: '3px solid #a00' } 
        }); 
});

$("#ajax-dialog").ajaxStop(function() {
    $('#gender-dialog').unblock(); 
});

DEMO

Блокировка полной страницы:

$("#ajax-dialog").ajaxStart(function() {
    $.blockUI({ message: '<h1>Loading...</h1>', baseZ: 2000 });  
});

$("#ajax-dialog").ajaxStop(function() {
    $.unblockUI();
});

Обратите внимание на опцию baseZ, в данном случае это z-индекс наложения, значение по умолчанию которого равно 1000. Установите для него значение, превышающее значение диалогового окна для его покрытия.

DEMO

...