js前端验证时间,数字

最近,遇到一个平时也最常遇到的输入框输入验证问题,比如验证时间必须为13:00这种格式。折腾整理出来两种用js验证的。
第一种:
<input  class="input-text"  name="endtime" type="text" onkeyup="this.value=this.value.replace(/[^\d\:]/g,'')"

直接采用键盘弹起事件,利用正则表达式替换掉非法的字符,即使输入了,也会立即被替换成空。
第二种

<input class="input-text" name="endtime" type="text" onkeydown="checkKeyForTime(this.value,event)"/>
<script type="text/javascript">
function checkKeyForTime(value,e){
var isOK = false;
var key = window.event ? e.keyCode : e.which;
if ((key > 95 && key < 106) || //小键盘上的0到9
(key > 47 && key < 60) || //大键盘上的0到9
key==186 || key == 8 || key == 9 || key == 46 || key == 37 || key == 39 //不影响正常编辑键的使用(186:冒号 8:BackSpace;9:Tab;46:Delete;37:Left;39:Right)
) {
isOK = true;
} else {
if (window.event) //IE
{
e.returnValue = false; //event.returnValue=false 效果相同.
}
else //Firefox
{
e.preventDefault();
}
}
return isOK;
}
</script>

第二种,是直接在其按下按键的时候判断输入的字符的ascii码是否在合法的范围,不在则不让其触发事件,让其无法输入。
[color=red]问题:第二种方式有个问题,就是在于在不同的输入法状态下,非法字符的ascii码值不是相同的,所以导致上面第二种在某种输入法状态下还是无法过滤非法的字符,所以,最好的方式直接采用正则表达式来过滤替换 [/color]:wink:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值