内联函数将输入限制为最多2个小数位的数字?

时间:2018-04-04 15:29:23

标签: javascript validation input onkeyup

目前我的表单中有一个输入,我只限制数字输入,它不允许输入除整数之外的任何字符:



<input class="quantity" type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57">
&#13;
&#13;
&#13;

我想修改此onkeyup代码,以便它还允许最多包含2位小数的数字。是否可以直接在内联onkeyup函数中执行,还是需要在输入之外创建一个函数并调用它?我发现了一些类似的问题,但它们主要与事后验证输入有关,而我想限制人们甚至输入一个不是一个整数或一个小数位数为1或2的数字。

不幸的是,HTML5模式也不是一个选项,因为我必须支持那些不支持它的浏览器。

1 个答案:

答案 0 :(得分:1)

按下键并且值已添加到输入后,

onkeyup事件触发,因此您必须在值更改之前限制用户。

使用type="number"用户将无法输入十进制数以外的任何字符;通过使用minmax属性,浏览器会将输入标记为invalid,但这并不会限制用户输入大于最大值的值。

在下面的示例中,我使用onkeypress事件侦听器检查输入更改前输入的值,并检查当前值和新输入值的总和,以确保它小于100并且不允许用户输入任何值值大于99。

<input type="number" onkeypress="return (this.value + String.fromCharCode(event.which) > 99) ? false : true;" min="0" max="99">

链接到实例:JSFiddle