有一个输入框,要求只能输入1到999以下数字,于是
设置<input type="number" min="1" max="999">
结果发现可以输入e.因为e是一个常数。
使用网上的解决办法加入:
onkeypress='return( /[\d]/.test(String.fromCharCode(event.keyCode)))
这样解决了可以输入E的问题,但是这样输入框输入的数字可以大于999了。。
最后面采用以下方法解决:
<input type="number" min="1" max="9999" maxlength="4" oninput="value=value.replace(/e/g,'');if(value.length>4)value=value.slice(0,4)">
以上发现还是有问题,被全部替换了。最终,改成type="text",输入后用正则替换完所有非数字字符后,再取左4位
<input type="text" oninput="value=value.replace(/[^\d]/g,'');if(value.length>4)value=value.slice(0,4)">
或是
<input type="text" maxlength="4" oninput="value=value.replace(/[^\d]/g,'')">