mirror of https://github.com/dirtbags/moth.git
JS Input Helpers
This commit is contained in:
parent
15503cb45b
commit
caa957a08d
|
@ -0,0 +1,46 @@
|
||||||
|
function helperUpdateAnswer(event) {
|
||||||
|
let e = event.currentTarget
|
||||||
|
let value = e.value
|
||||||
|
let inputs = e.querySelectorAll("input")
|
||||||
|
|
||||||
|
if (inputs.length > 0) {
|
||||||
|
// If there are child input nodes, join their values with commas
|
||||||
|
let values = []
|
||||||
|
for (let c of inputs) {
|
||||||
|
if (c.type == "checkbox") {
|
||||||
|
if (c.checked) {
|
||||||
|
values.push(c.value)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
values.push(c.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value = values.join(",")
|
||||||
|
}
|
||||||
|
|
||||||
|
// First make any adjustments to the value
|
||||||
|
if (e.classList.contains("lower")) {
|
||||||
|
value = value.toLowerCase()
|
||||||
|
}
|
||||||
|
if (e.classList.contains("upper")) {
|
||||||
|
value = value.toUpperCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
document.querySelector("#answer").value = value
|
||||||
|
}
|
||||||
|
|
||||||
|
function helperActivate(e) {
|
||||||
|
e.addEventListener("input", helperUpdateAnswer)
|
||||||
|
}
|
||||||
|
|
||||||
|
function helperInit(event) {
|
||||||
|
for (let e of document.querySelectorAll(".answer")) {
|
||||||
|
helperActivate(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState === "loading") {
|
||||||
|
document.addEventListener("DOMContentLoaded", helperInit);
|
||||||
|
} else {
|
||||||
|
helperInit();
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
Summary: Using JavaScript Input Helpers
|
||||||
|
Author: neale
|
||||||
|
Script: helpers.js
|
||||||
|
Answer: helper
|
||||||
|
|
||||||
|
MOTH only takes static answers:
|
||||||
|
you can't, for instance, write code to check answer correctness.
|
||||||
|
But you can provide as many correct answers as you like in a single puzzle.
|
||||||
|
|
||||||
|
This page has an associated `helpers.js` script
|
||||||
|
you can include to assist with input formatting,
|
||||||
|
so people aren't confused about how to enter an answer.
|
||||||
|
|
||||||
|
You could also write your own JavaScript to validate things
|
||||||
|
|
||||||
|
This is just a demonstration page.
|
||||||
|
You will probably only want one of these in a page,
|
||||||
|
to avoid confusing people.
|
||||||
|
|
||||||
|
Timestamp
|
||||||
|
<input type="datetime-local" class="answer">
|
||||||
|
|
||||||
|
All lower-case letters
|
||||||
|
<input class="answer lower">
|
||||||
|
|
||||||
|
Multiple concatenated values
|
||||||
|
<div class="answer lower">
|
||||||
|
<input type="color">
|
||||||
|
<input type="number">
|
||||||
|
<input type="range" min="0" max="127">
|
||||||
|
<input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Select from an ordered list of options
|
||||||
|
<ul class="answer">
|
||||||
|
<li><input type="checkbox" value="horn">Horns</li>
|
||||||
|
<li><input type="checkbox" value="hoof">Hooves</li>
|
||||||
|
<li><input type="checkbox" value="antler">Antlers</li>
|
||||||
|
</ul>
|
Loading…
Reference in New Issue