有时候,我们在web页面需要限定用户的输入字符,比如库存的话只能输入正整数,金额的话只能输入整数,怎么处理呢,下面这里有两个方法。
加入这里有输入框:
<input type="text" placeholder="请输入库存" onkeyup="onlyNumber(this)" onafterpaste="onlyNumber(this)">
因为库存只能是大于等于0的整数,并且如果超过两位的话第一位不能为0,实现方式如下。onafterpaste主要是防止黏贴。
function onlyNumber(o){
//不可以是非数字
o.value=o.value.replace(/\D/g,'');
//如果大于等于两位数,则第一位不可以是0
if(o.value.length>1){
//第一位不能是0
if(o.value.substring(0,1)==0){
o.value=o.value.substring(1,o.value.length);
}
}
//只能输入8位
o.value=o.value.substring(0,8);
}
逻辑很简单,相信大家都看得懂。
那么如果是金额呢,那么可以输入小数点,但是如果前两位没有小数点的话,第一位不可以是0.
//只能输入整数或者小数,若是大于两位,前面两位之间没有小数点,且首位是0,则移除0
function onlyNumberAddD(o){
o.value = o.value.replace(/[^\d.]/g, ""); //仅保留数字和"."
o.value = o.value.replace(/\.{2,}/g, "."); //两个连续的"."仅保留第一个"."
o.value = o.value.replace(".", "$#*").replace(/\./g,'').replace('$#*','.');//去除其他"."
o.value = o.value.replace(/^(\d+)\.(\d\d).*$/, '$1.$2');;//限制只能输入两个小数
//若是没有小数点,那么长度大于1的话如果第一位是0,那么需要去除掉
if(o.value.length>1){
if(o.value.substring(0,2).indexOf(".")==-1){
//第一位不能是0
if(o.value.substring(0,1)==0){
o.value=o.value.substring(1,o.value.length);
}
}
}
//只能输入8位
o.value=o.value.substring(0,8);
}
逻辑很简单,相信大家也看得懂。