今天公司的测试员在测试项目时提出了一个问题:当我们把input框的type值设置为number的时候,虽然限制了只能输入数字,但是这个时候我们会惊奇的发现 e 是可以输入的。
<input type="number" placeholder="最低值" />~<input type="number" placeholder="最高值" />
去查了一下资料才知道,因为 e 在数学里的它代表的是无理数,e是自然对数的底数,同时它又是一个无限不循环小数,所以我们在输入 e 时,输入框会默认 e 是数字,从而没有对它进行限制。
为了避免这个漏洞所带来的不便,我们可以这样对其进行限制,代码如下:
<input type="number" placeholder="最低值" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>
~
<input type="number" placeholder="最高值" onKeypress="return (/[\d\.]/.test(String.fromCharCode(event.keyCode)))"/>