home · contact · privacy
Improve todo accounting script.
[misc] / todo_templates / watch_form.html
1 <script>
2 var mere_filter_inputs = ['t_and', 't_not', 'filter'];
3 var sending_commits = false;
4 var changes_to_commit = false;
5 var form_to_watch = document.getElementById('form_to_watch');
6 for (let i = 0; i < form_to_watch.elements.length; i++) {
7     let el = form_to_watch.elements[i];
8     if (['INPUT', 'TEXTAREA', 'SELECT'].includes(el.tagName)) {
9         el.addEventListener('change', function(event) {
10             if (!mere_filter_inputs.includes(event.target.name)) { 
11                changes_to_commit = true; 
12             };
13         });
14     };
15 };
16 form_to_watch.addEventListener('submit', function(event) {
17     if ('update' == event.submitter.name) {
18        sending_commits = true; 
19     };
20 });
21 window.addEventListener('beforeunload', function(event) {
22     if (changes_to_commit && !sending_commits) {
23         var warning = 'about to lose unsaved changes, continue?';
24         event.returnValue = warning;
25         return warning;
26     }
27 });
28 </script> 
29