JS 只能输入数字和两位小数的JS

最近项目压的喘不过气来,所以都基本不来园子了,手头还有好多事,就不扯淡了,直接上内容

JS代码:

 1 function clearNoNum(value){
 2     //清除"数字"和"."以外的字符
 3     value = value.replace(/[^d.]/g,"");
 4 
 5     //验证第一个字符是数字而不是
 6     value = value.replace(/^./g,"");
 7 
 8     //只保留第一个. 清除多余的
 9     value = value.replace(/.{2,}/g,".");
10     value = value.replace(".","$#$").replace(/./g,"").replace("$#$",".");
11 
12     //只能输入两个小数
13     value = value.replace(/^(-)*(d+).(dd).*$/,'$1$2.$3'); 
14 }

HTML代码:

1 <input type="text" name="addoil" onkeyup="clearNoNum(this.value)" size="10"/>

是不是有人觉得有些眼熟,不错依然是我抄别人的,保存在这里以便自己查找,也希望能给大家提供帮助。

不过这个方法有几个问题有几个问题

1.用keyup事件的话会有一个按键弹起的时间,虽然很短暂,但是我们可以看到输入的内容一闪而逝

2.用keyup事件无法监听到鼠标右键粘贴的内容改变事件

3.这个正则可以匹配到数字直接跟随一个点的情况,如:1.,22.等等

我们说下解决方法

1,2两条我们可用jquery的on方法给节点同时绑定inputpropertychange两个事件就可以实时监听输入框的内容改变了,这个方法在处理那些需要实时统计输入框已输入文字数量的时候很好用。

至于第3条,诚如你们知道的,上面的正则我都是抄别人了,就不要说还能更进一步优化了,希望如果各位看官能给出优化方案,回复在下面。

原文地址:https://www.cnblogs.com/dpure/p/4801487.html