Прежде всего, я предпочитаю не возвращать ноль. Это то, что пользователь должен явно помнить, чтобы обрабатывать его как особый случай (если он не ожидает нулевого значения - это задокументировано). Если им повезет, они сразу же прекратят это и получат ошибку. Если им не повезет, они поместят их в коллекцию и позже столкнутся с той же проблемой.
Я думаю, у вас есть два варианта:
Я следую стилю кодирования, в котором редко возвращаю ноль. Если / когда я это сделаю, это явно задокументировано, чтобы клиенты могли обслужить это.
Попробуйте свою логику другим способом. Это означает, что поместите логику для проверки значения поля ввода в свой метод onbeforeunload
.
window.onbeforeunload = function () {
if ($("#is_modified").val() == 'true') {
return "You have unsaved changes.";
} else {
return true; // I think true is the proper value here
}
};
почему бы не вызвать метод onbeforeunload
функция, которая проверяет, изменились ли значения, и если да, возвращает подтверждение «несохраненных изменений»?
Мы просто используем Window.onbeforeunload
как наш «измененный» флаг. Вот что мы делаем (с использованием lowpro):
Event.addBehavior({
"input[type=radio]:change,input[type=text]:change,input[type=checkbox]:change,select:change": function(ev) {
window.onbeforeunload = confirmLeave;
}
".button.submit-button:click": function(ev) {
window.onbeforeunload = null;
},
});
function confirmLeave(){
return "Changes to this form have not been saved. If you leave, your changes will be lost."
}