Я думаю, что у меня есть для вас ответ.
Предыдущий пример представлял собой простую HTML-страницу с div или двумя и некоторыми элементами ввода.
Однако при перемещении образца в схему главной страницы / заполнителя содержимого ASPX появился элемент формы, который обернул содержимое. Когда ваша страница будет отображена, вы увидите contentplaceholder
внутри элемента формы, например:
<form method="post" action="test2.aspx" id="form1">
<!-- your content is contained here -->
</form>
В результате, когда вы нажали кнопку, чтобы отобразить простое модальное диалоговое окно, форма была отправлена ... по крайней мере, это было в Chrome. Я не тестировал его на FireFox, но IE8 не отправлял форму повторно. Я предполагаю, что это потому, что кнопка, используемая для открытия диалога, является элементом button
; очевидно, это вызывает отправку формы в Chrome, но не в IE8. (Это предположение - я точно не знаю.)
Исправление состоит в том, чтобы предотвратить действие по умолчанию нажатия кнопки в обработчике события нажатия кнопки. Это очень просто сделать - вот обновленный код:
$(document).ready(function () {
$("#theModal").click(function (e) { //e = the element that raised the event (button)
e.preventDefault(); //prevent the default action of the button click
$("#sample").modal({
opacity: 80,
overlayCss: { backgroundColor: "#fff" }
});
});
});
Функция обработчика щелчка теперь принимает аргумент, представляющий элемент, вызвавший событие (e
- кнопка). Первое, что я тогда сделаю, - это предотвращение действия нажатия кнопки по умолчанию (e.preventDefault();
). Затем я продолжаю показ мод. Это делает трюк! Я проверил это на Chrome и IE8, и оба работали нормально.
Надеюсь, это поможет. Дайте мне знать, если у вас есть другие вопросы по этому поводу, и я обновлю свой ответ соответственно. Удачи !!