From 09be48555a073dfd485ec5a915002fbf4998b8fe Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Mon, 18 Jan 2016 05:55:11 -0500 Subject: [PATCH] Raikogram script. --- raikogram.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 raikogram.js diff --git a/raikogram.js b/raikogram.js new file mode 100644 index 0000000..28518b0 --- /dev/null +++ b/raikogram.js @@ -0,0 +1,42 @@ +/* Validate distances. */ +function validate() { + var valid = true; + for (input of document.getElementsByTagName('input')) { + var m = input.name.match(/^from\d+to\d+$/); + if (! m) continue; + input.setCustomValidity(""); + var text = input.value; + if (! text) input.setCustomValidity("Missing"); + else if (! text.match(input.pattern)) valid = false; + } + var submits = document.getElementsByName('edit_raikogram'); + if (submits.length) submits[0].disabled = ! valid; +} + +/* Distance updated. */ +function changed_distance(event) { + var input = event.target; + var m = input.name.match(/^from(\d+)to(\d+)$/); + if (! m) return; + var from = m[1]; + var to = m[2]; + var others = document.getElementsByName('from' + to + 'to' + from); + var text = input.value; + if (others.length) others[0].value = input.value; + validate(); +} + +/* Document onload. */ +function loaded() { + for (input of document.getElementsByTagName('input')) { + var m = input.name.match(/^from\d+to\d+$/); + if (! m) continue; + input.autocomplete = 'off'; + input.type = 'text'; + input.pattern = '^(?:[0-9]*\.)?[0-9]+$'; + input.addEventListener('change', changed_distance, true); + } + validate(); +} + +document.onload = loaded(); -- 2.7.4