日期:2014-05-18  浏览次数:20458 次

超简单的Javascript数字输入问题
要求文本框中只能输入实数:
1.可以输入负数,但负号只能出现一次且只能出现在首位;
2.小数点不能出现在首位,也不能紧跟在负号后面,即不能有类似“-.xxx”的情况;
3.不能出现类似“00xxx”、“-00xxx”的情况,即不管正数还是负数,前面只能出现一个“0”且只能是“0.xxx”或“-0.xxx”的情况;
4.要在输入的时候判断而不要在输入完成之判断;
5.不符合以上情况的输入不出现在文本框中(先出现后删除的也不要)。

以上要求其实就是一个正常实数的要求,但网上搜索好久都没有完美的解决方案,难道这个问题很难?

以上式子中的“x”表示数字

------解决方案--------------------
^[+-]?[0-9]+[.]?[0-9]+$
------解决方案--------------------
function checknum(str)
{
var matchstr=/^-?(0.(\d+)?[1-9]|[1-9](\d+)?)$/;
retrun matchstr.test(str);
}

第四五条你找神仙做吧
------解决方案--------------------
不懂正则,帮你顶,顺便接点分!
------解决方案--------------------
/^-?(?!\.)(?!0{2,})((0\.\d+)|([1-9]\d*\.\d+)|([1-9]\d*))$/

测试
0.1 true
-0.1 false
-.1 false
10.10 true
10. false
1000 true
------解决方案--------------------
判断onkeypress,具体的编码忘了,你查查吧
逻辑都有了,具体代码判断应该不难写吧
------解决方案--------------------
帮顶!
------解决方案--------------------
/^(\+|-)?(0|[1-9]\d*)(\.\d*[1-9])?$/ 这个正则可以比较齐全地判断是否为数字
------解决方案--------------------
边写边验证,应该是onkeydown事件。
至于不出现在文本里面,也就是onkeydown的时候失效。
是不是判断他的 Ascii 码啊。
------解决方案--------------------

<input type= "text " onkeydown= "checkValue(this) ">

定义检测函数
<script type= "text/javascript ">
function checkValue(obj) {
var validStr=/^-?(?!\.)(?!0{2,})((0\.\d+)|([1-9]\d*\.\d+)|([1-9]\d*))$/;
if (validStr.test(obj.value)==false){
alert( '输入非法 ');
obj.value=obj.value.subStr(0,obj.value.length-2);
return;
}
</script>
------解决方案--------------------
问题解决就要结贴,顶一下
------解决方案--------------------
键盘检测都解决不了 粘贴的,所以楼主的要求不能100%满足。
------解决方案--------------------
JF UP
------解决方案--------------------
用AJAXExtensionTools中的控件,有一个好像能实现吧
------解决方案--------------------
4.要在输入的时候判断而不要在输入完成之判断;
5.不符合以上情况的输入不出现在文本框中(先出现后删除的也不要)。

====

那么假如用户输入

5. 时候你说我该判断是合法还是非法?非法的话,分数点永远也无法输入了,合法的话,如果你在输入完成之后判断,那么如果此时用户直接提交又是非法了,还有 .... 此需求太苛刻,没时间考虑那么多

一个本来 onchange 事件可以搞定,非要那么复杂 ....
------解决方案--------------------
up
------解决方案--------------------
mark
------解决方案--------------------
不一定要在输入的时候判断吧?
------解决方案--------------------
Eri(NULL) ( ) 信誉:99 2007-8-9 21:04:56 得分: 0
键盘检测都解决不了 粘贴的,所以楼主的要求不能100%满足。

-------------------------------------------------------
onclick?