Restrict keypress against regex
Solution handles range selection and paste events
by pbatey
HTML
<input type="text" onkeypress="updateOk(event)" onpaste="updateOk(event)" placeholder="number with 2 digits"/>
JavaScript
function updateOk(e) {
var k
if (e.clipboardData) k = e.clipboardData.getData('text/plain')
else k = String.fromCharCode(!event.charCode ? event.which : event.charCode)
const start = e.target.selectionStart
const end = e.target.selectionEnd
const v = e.target.value
const n = v.slice(0,start) + k + v.slice(end)
if (!/^\d+(?:\.\d{0,2})?$/.test(n)) {
e.preventDefault()
}
}