diff options
author | Benjamin Barenblat <bbaren@mit.edu> | 2017-07-23 08:45:59 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@mit.edu> | 2017-07-23 08:45:59 -0400 |
commit | 8c58ba2e1db6e97ca1f18fd9ca52ffead53e4a4f (patch) | |
tree | 491d3b13813610943c60460d3e178d3a73916346 /lib/js/urweb.js | |
parent | 6145d9df05f442e29dfa96a0b8e15ffcc2d683dd (diff) | |
parent | f814fd699dc707e810c996062370ee787863d926 (diff) |
Merge branch 'upstream' into dfsg_clean
Diffstat (limited to 'lib/js/urweb.js')
-rw-r--r-- | lib/js/urweb.js | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 222a8322..ebe192ca 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -1127,6 +1127,23 @@ function inpt(type, s, name) { return x; } +function inpt_float(type, s, name) { + if (suspendScripts) + return; + + var filterFloat = function(value) { + if (/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/ + .test(value)) + return Number(value); + return null; + } + var x = input(document.createElement("input"), s, function(x) { return function(v) { if (x.value != v) x.value = v; }; }, type, name); + x.value = s.data; + x.onkeyup = x.oninput = x.onchange = x.onpropertychange = function() { sv(s, filterFloat(x.value)) }; + + return x; +} + function inp(s, name) { return inpt("text", s, name); @@ -1157,11 +1174,11 @@ function color(s, name) { } function number(s, name) { - return inpt("number", s, name); + return inpt_float("number", s, name); } function range(s, name) { - return inpt("range", s, name); + return inpt_float("range", s, name); } function date(s, name) { |