У меня есть следующая форма django:
<form class="form-inline" method = "post" >
{% csrf_token %}
{{ form.media }}
{{ form.as_p }}
<button type="submit" onclick="setFormSubmitting()">Submit</button>
</form>
и следующий javascript
var isDirty = function() { return false; }
var formSubmitting = false;
var setFormSubmitting = function() { formSubmitting = true; };
window.onload = function() {
window.addEventListener("beforeunload", function (e) {
if (formSubmitting) {
return undefined;
}
var confirmationMessage = 'It looks like you have been editing something. '
+ 'If you leave before saving, your changes will be lost.';
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.
});
};
Цель состоит в следующем: пользователь может оставить без предупреждения , если что-то не было написано в текстовой области (form.media), и отправка не была нажата (как пользователь что-то набрал и переместился в другая страница).
Моя борьба в части isDirty - как проверить, что что-то было написано в form.media.
Edit:
Проблема с Javascript была решена на основе ответа CodeCaster (спасибо Шафикуру Рахману за указание)