后改变:onkeyup="value=value.replace(/[^(\+|\-){1}\d{1,}\.\d{1,}|\d{1,}]/g,'')
此时可以输入 -1.23或者+1.34
但是也可以输入:
---+++2.434
-34.34-++----这种变态数据。
请各位大侠帮忙。
我用了网上好多例子都未能实现。而且我不想写funtion(),所以请大侠们尽量在这个正则里面修改。那个粘贴也要一并支持此功能。
在网上找了两天,CSDN里也有问的,但是一直没有解决此问题。都是要写FUNCATION来做。
后来找到一个比较变态的代码。能实现此功能。
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}">
我测试了一下,这三个事件,只用一个onkeyup是可以的。keyPress可能出现停顿显示第一个字符问题。
希望大家以后能多多研究
用isNaN()方法,这个方法判断如果不是数字就返回true,是数字返回false(可以包含+-)
所以你可以这么没写
onkeyup="if(isNaN(value)){value=''}",如果不是数字就清空文本框,可能和你想要的不太一样,你想要的可能是清除那些不合法的符号,保留数字,我这个是全给你清空了.追问
多谢小哥,你这个方法可以让我省一部分JS验证。对于输入多个小数点的问题。
但是我想要的是,能输入 - 号。因为客户在输入数据时,有一部分是 负金额。你这个验证对于 - 号也是一并清空的。所以还是不行呢。我在找找。如果找到了,我贴上来。大家一起瞧瞧。
输入负号是可以的,我测试过
alert(!isNaN("-4.0")),返回的是true
不过你能找到正则就最好了
这个不行。可以随便输入的