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+)\.(\d\d).*$/,‘$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方法给节点同时绑定input,propertychange两个事件就可以实时监听输入框的内容改变了,这个方法在处理那些需要实时统计输入框已输入文字数量的时候很好用。

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

时间: 2024-10-24 17:15:25

JS 只能输入数字和两位小数的JS的相关文章

vue+element 中 el-input框 限制 只能输入数字及几位小数(自定义)和输入框之键盘

<!-- 下布转数 --> <el-table-column align="right" width="87px"> <template slot="header" slot-scope="scope"> <span class="sort-table-header">下布转数</span> </template> <templa

html模板中的数字保留两位小数

<script> //html模板中的数字保留两位小数 function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num*100+0.50000000001); cents = num%100; num = Math.flo

JS只能输入数字,数字和字母等的正则表达式

注: 本文摘抄至:http://www.cnblogs.com/yzenet/archive/2012/04/10/2440312.html JS判断只能是数字和小数点 0.不能输入中文1)<input onpaste="return false;" type="text" name="textfield" style="width:400px; ime-mode:disabled" value=""

js只能输入数字和小数点

1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"> 2.只能输入数字,能输小数点.<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste

java,中双精度double控制保留两位小数,js控制两位小数

Java DecimalFormat dcmFmt = new DecimalFormat("0.00"); double db = 12333.353; System.out.println(dcmFmt.format(db)); JS <script type="text/javascript"> //保留两位小数 //功能:将浮点数四舍五入,取小数点后2位 function toDecimal(x) { var f = parseFloat(x);

关于input只能输入数字的两种小方法

第一种: 直接给input标签 name赋值如下 <input name="start_price" id="start_price" type="text" size="5" onkeyup="value=value.replace(/[^\d^\.]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getD

js只能输入数字、汉字、字母等正则匹配

只能输英文:<input type="text" onkeyup="value=value.replace(/[^a-zA-Z]/g,'')"> 只能输入汉字:<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('tex

js-格式化数字保留两位小数-带千分符

很多时候发现有时候js会提示自带函数不能使用,所以自己找了很多资料实现了个 html <input type="text" class="input_text input_number" name="mgsy_dbnfjlr" value="" onblur="this.value=fouces_qfh(this.value)" /> js函数 function fouces_qfh(obj){

java数字保留两位小数四舍五入

import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubl