JS验证数字问题。1、input中可输入 + -号,小数点,数字。2、+-号只在开始出现。中间不能出现。

后改变: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

不过你能找到正则就最好了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-21
^[+-]?[1-9]\d*(\.\d+)?$追问

这个不行。可以随便输入的

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网