金额文本框校验

百度知道上的一问一答:
原文链接:http://zhidao.baidu.com/question/489829775.html
一、问:
一个HTML文本框,我想限制用户只能输入数字(包含小数,并且小数点后保留2位),看了很多网上互相抄袭的例子,帮助不大,希望专家指教!下面是小弟暂用的方法(替换法):
var oldNumeric="";//记录以往输入的值
function onlyNumeric(nameVal){
var val=getValByNm(nameVal);
if(val==""){oldNumeric="";}//如果已经清空了文本框,则旧值清空,不做此不会出现首位+0的情况
if($.isNumeric(val)||(event.keyCode==8)){//如果输入的是数字或者是backspace键
oldNumeric=+val;
//alert(oldNumeric);
}else{
setValByNm(nameVal,oldNumeric);//如果是非法值
}
}
我感觉正则和Jquery的isNumeric()方法效果差不多,我现在关键是用户体验怎么达到完美,用户只能输入数字,如果输入了非法数字如:0.1.0这样的,怎么让他在输入第二小数点时直接屏蔽掉他的操作。
我自己写的方法不好的地方就是:用户仍然能输入任何字符,但输入非字符后替换掉而已,这种体验很烂。有没有好的方法。
二、答:
仅对于你的问题补充进行一下交流:
       因为用户的录入方式还是比较花样繁多的,所以你的验证js也许还会面临一些挑战。
       比如你既然想到了backspace键,那么对于delete键如何处理呢,如果当作非法键来处理的话,对于习惯小键盘录入数字的人来说还是不太舒服的。
       或是用户选中文本框内一部分数字后按下backspace键,或是用户调用输入法,或是ctrl+v粘贴入文本......
       
当然我绝对不是在挑错找碴,只是提一些建议:
       如果需要适应这些录入方式的话,必然要写很多的js代码,并且有一个问题:用户可以禁掉javascript。所以觉得对于验证而言,后台为主,js在前台为辅。我们的最终目的其实只有两种,对于正确录入值进行操作,对于错误值进行拦截。
当然话说回来,如果你的需求确实是严苛的前台验证的话,那加油吧。
 
以上。
提问者评价
感谢,确实非常复杂,我改用EasyUI的numberBox控件了,但输入法状态的情况还是不能解决。
三、如问题提出者,对于金额文本框的校验,目前我仅能通过简单js进行过滤,未找到优秀解决方法,希望有好的解决方法的朋友分享下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值