身份证input输入框限制,只能输入纯数字及限制长度

需求:只能输入18位纯数字,并且输入其他字符时删除其他字符

1<input type="number">
还是可以输入e和e-,不符合
2<input type="text" maxlength="18" >
限制了18,但不能指定只输入数字,type="number"和配合时maxlength长度限制失效,不符合
3<input type="number"oninput="if(value.length>18)value=value.slice(0,18)" >
能限制数字又能限制长度,看似没问题,但在开头或中间加上字母e,长度限制将失效,不符合
4<input type="number" onkeyup ="value=value.replace(/[^\d]/g,'')">
能限制它不能输入其他字符了,但写上字母e时整个input的内容就全清空了,有点缺陷
5<input type="text" onkeyup="certNumOnkeyup(this)" >
当不再局限与number类型,改成text类型时发现这个bug竟然消失了,输入e也只清空了e

最终代码:

<input type="text" id="certNum" placeholder="请输入证件号码" onkeyup="certNumOnkeyup(this)" oninput="if(value.length>18)value=value.slice(0,18)">

function certNumOnkeyup(obj) {
    	obj.value = obj.value.replace(/[^\d.]/g,"");//清除"数字"以外的字符
    obj.value = obj.value.replace(/^0+$/g,"");//以0开头时清空
}
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值