Предыстория:
Я использую jquery blockui 2.31 на jquery 1.3.2, на ASP.NET 2.0.
Я использую диалоговое окно, чтобы показать (обычно) скрытый DIV как своего рода всплывающее модальное диалоговое окно с элементами управления на стороне сервера ASP.NET (для простоты, asp:Button). Там нет AJAX, или не гарантируется.
Одна из вещей, которые делает jquery blockui, если вы передаете ему некоторые html-элементы, — это удаление элемента управления с его места на странице и добавление его к body.
Похоже, что ASP.NET 2.0 хочет, чтобы элементы управления, которые отправляются обратно, были в форме, которую вы можете найти с помощью $(#aspnetForm). jquery blockui просто переместил их в тело, поэтому обратная передача никогда не срабатывает.
Этот метод является методом экземпляра и, вероятно, не будет работать как статический (ссылки, зарегистрированные в элементах управления пользователя и страницы...)
Я немного покопался:
Я изменил jquery blockui, чтобы он добавлялся к форме (и боролся с селектором, чтобы удалить блок), но это не работает с IE6 и IE7 - наложение начинается с формы, и весь диалог появляется не по центру. Скрытие оверлея не вариант, и я действительно ненавижу возиться со специфичным для IE css и скриптом, специфичным для IE.
Я попытался добавить некоторые слои к телу, а некоторые к форме, но слои тела всегда отображаются поверх слоев формы (поэтому непрозрачный слой, который блокирует ввод, также блокирует ввод в div, который я пытаюсь показать).
Я думаю, что решение заключается в том, чтобы div вызывал скрытый фиктивный якорь для выполнения обратной передачи исходной кнопки. sontek предложил это в своем ответе на связанный с этим вопрос.
Мой актуальный вопрос:
Я на правильном пути с трюком с фальшивой обратной передачей? Я полагаю, что если я полагаюсь на jquery для функциональности модального диалога, мне не следует беспокоиться об отступлении.
Или я должен продолжать возиться со стилем добавления формы?