Прежде всего, вы смешиваете груши и яблоки, jquery dialog
и onbeforeunload
- это две разные вещи. Я думаю, что вы хотите закрыть диалог, а не окно (название вопроса вводит в заблуждение).
Вам не нужно отслеживать каждое mousedown
событие, вам нужно вызвать функцию в диалоговом окне перед событием закрытия.
В beforeClose
событии диалога проверьте, есть ли грязные поля, если есть грязные поля, всплывающее сообщение с подтверждением, в противном случае верните true и диалог вызовет событие закрытия.
Примерно так (не проверено):
$("#dialog").dialog({
beforeClose: function(){
var isDirty = //logic for dirty check of inputs
if(isDirty){
if(confirm("Are you sure you want to close without saving?")){
return true;
} else {
return false;
}
}
return true;
}
});
Конечно, я использую обычный браузер подтверждение, поэтому вам нужно будет использовать свой собственный лог c для подтверждения диалога. Надеюсь, это поможет!