Javascript HTML5输入类型编号+;oninput regex验证擦除按点的字段
HTML5中的输入类型数字与oninput事件相结合,使其具有可选的最大长度qith和可选的n最大小数,我遇到了一些问题。我有以下示例代码:Javascript HTML5输入类型编号+;oninput regex验证擦除按点的字段,javascript,regex,html,input,Javascript,Regex,Html,Input,HTML5中的输入类型数字与oninput事件相结合,使其具有可选的最大长度qith和可选的n最大小数,我遇到了一些问题。我有以下示例代码: 由于您只想控制总数及其小数部分的长度,因此我建议使用键下事件,而不是输入事件。下面的表达式 <input type="number" name="name" step="any" onkeydown= "return event.keyCode<32 || this.value.length<8 && /^\d*([.,
由于您只想控制总数及其小数部分的长度,因此我建议使用键下
事件,而不是输入
事件。下面的表达式
<input type="number" name="name" step="any" onkeydown=
"return event.keyCode<32 || this.value.length<8 && /^\d*([.,]\d{0,2})?$/.test(this.value)"
>
- 如果超过8个字符,则禁止输入
- 如果输入的小数超过3,则禁止输入
- 允许使用特殊关键点,如backspace
- 不允许非数字输入(通过
自动)type=“number”
step
属性自己进行验证。你不会得到立即删除坏字符的满足感,但一旦失去焦点,输入将显示为无效。如果需要,可以为元素设置自定义错误消息
/^[0-9]+(\[0-9]{1,3})$/
请在stackoverflow代码段中设置您的代码,以便每个人都可以看到您描述的问题并直接处理。但是/^[0-9]+(\[0-9]{0,3})$/
效果更好。谢谢,抱歉,我刚刚更新了它。我有同样的问题,这2个regexhowever将更好地工作比我的正则表达式,但仍然有问题,按点。我真的不知道这是否是一个正则表达式问题,因为在chrome控制台上它工作得很好/^[0-9]+(\[0-9]{0,3})$/.test('1.23')。如果你想将某个东西粘贴到字段中怎么办?@miken32你是对的:可以扩展条件以允许像Ctrl+V这样的键代码,但也可以通过上下文菜单进行粘贴。因此,如果只是限制数字和小数位数,html输入元素的min、
max和
step`属性将优于任何javascript解决方案。非常感谢。这个解决方案非常适合我。粘贴时我没有问题,因为我验证了提交表单上的所有字段,因此使用此方法,我可以限制意外错误的输入,并确保提交时的值是正确的(在服务器端进行额外验证,以避免任何用户更改浏览器上的代码)。非常感谢。这很好,可能是一个最佳实践,但我希望避免意外输入,并在提交表单验证之前使其可见。在某些情况下,这种方法对我来说可能很有趣,但在这一步中,我需要每一步应用1个整数。(我希望能够接受这两个答案)