Я хочу показать диалоговое окно подтверждения, когда пользователь выбирает элемент в DropDownList. Если пользователь нажимает «Отмена», я хочу остановить обратную передачу. Вот функция, которую я добавляю в событие onchange:
function imitateConfirmUnload(event) {
if (window.onbeforeunload = null)
return true;
return confirm("Are you sure you want to navigate away from this page?\n\nYou have unsaved changes\n\nPress OK to continue or Cancel to stay on the current page.");
}
И это соответствующий бит кода в моем скрипте запуска, чтобы добавить обработчик к событию:
function addConfirmToWarnClasses() {
$('.warn').change(function() {
imitateConfirmUnload()
});
}
Проблема в том, что обратная передача происходит, даже если пользователь выбирает «Отмена» Если я перемещу обработчик к событию click, он работает. Но мне это кажется неуклюжим.
Редактировать
Исправление: он не работает по клику, потому что диалоговое окно запрещает выбор, поэтому, когда пользователь выбирает ОК, никаких изменений не происходит, и нет обратной передачи, когда вы этого хотите!
Редактировать 2
DropDownList находится внутри UpdatePanel, что может повлиять на поведение.