home · contact · privacy
Replace Booking edit taint handlers from .onchange to .oninput, but remove once used.
authorChristian Heller <c.heller@plomlompom.de>
Tue, 28 Jan 2025 13:05:38 +0000 (14:05 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Tue, 28 Jan 2025 13:05:38 +0000 (14:05 +0100)
templates/_macros.tmpl
templates/edit_raw.tmpl
templates/edit_structured.tmpl

index bf9bff59c5fff6ab42461d378326407c40aa9063..5afc9606a3d50bfb51f2222adece4baeb121a690 100644 (file)
@@ -54,20 +54,26 @@ td.invalid, tr.warning td.invalid { background-color: #ff0000; }
 
 {% macro taint_js() %}
 function taint() {
-  let els = document.getElementsByClassName("enable_on_change");
-  for (let i = 0; i < els.length; i++) {
-    els[i].disabled = false;
-  }
-  let links_text = '';
-  els = document.getElementsByClassName("disable_on_change");
-  for (let i = 0; i < els.length; i++) {
-    links_text += els[i].textContent + ' ';
-  }
+  // activate buttons "apply", "revert"
+  Array.from(document.getElementsByClassName("enable_on_change")).forEach((el) => {
+    el.disabled = false;
+  });
+  // deactivate Booking links
+  Array.from(document.getElementsByClassName("disable_on_change")).forEach((el) => {
+    links_text += el.textContent + ' ';
+  });
   const span = document.getElementById('booking_links');
+  let links_text = '';
   span.innerHTML = '';
   const del = document.createElement("del");
   span.appendChild(del);
   del.textContent = links_text;
+  // remove oninput handlers no longer needed (since we only ever go one way)
+  ['input', 'textarea'].forEach((tag_name) => {
+      Array.from(document.getElementsByTagName(tag_name)).forEach((el) => {
+        el.oninput = null;
+      });
+  });
 }
 {% endmacro %}
 
index 6e3702ded7ef642d8c417bcaf8f224a693f71e94..b58e7b394ffb9aa17149d2a2ccb882f25cdf0b6d 100644 (file)
@@ -15,7 +15,7 @@
 {% block content %}
 <form action="/edit_raw/{{id}}" method="POST">
 {{ macros.edit_bar("structured", id) }}
-<textarea name="booking" cols=100 rows=100 onchange="taint()">
+<textarea name="booking" cols=100 rows=100 oninput="taint()">
 {% for dat_line in dat_lines %}{{ dat_line.raw }}
 {% endfor %}</textarea>
 </form>
index 6e31d91632ba04999d3c2101f7564183d754e4a8..0e510aeacd8ece3aa0bd0d3c3c24cd41d02f3247 100644 (file)
@@ -40,7 +40,7 @@ function update_form() {
       input.name = `line_${i}_${name}`
       input.value = value.trim();
       input.placeholder = placeholder;
-      input.onchange = taint;
+      input.oninput = taint;
       if (dat_line.error) {
         td.classList.add("invalid");
       }