html文本框只能输入负数,解决type为number时能输入e和负数问题 去掉上下箭头的实现方法...

最近在做一个项目的时候遇到这样一个需求,要求input框只能输入数字,而且用户输入的数字必须是正数,所以这里我采用type="number"方式来完成,这样我们就不需要校验输入内容的合法性了,但是呢我疏忽了一点,在html5中,input type="number"时,右边会有一个上下小箭头,一直点击向下小箭头时,会出现负数情况,这明显不满足我们的需求,所以我通过css相关属性去掉上下小箭头,并完成浏览器的兼容。

公共css代码如下:

/*谷歌*/

input::-webkit-outer-spin-button,

input::-webkit-inner-spin-button {

-webkit-appearance: none;

}

/*火狐*/

input[type="number"] {

-moz-appearance: textfield;

}

当然如果你想去掉某个专用的number的小箭头样式,你也可以这样写:

/*在谷歌下移除input[number]的上下箭头*/

.inputNumber input[type='number']::-webkit-outer-spin-button,

.inputNumber input[type='number']::-webkit-inner-spin-button {

-webkit-appearance: none !important;

margin: 0;

}

/*在firefox下移除input[number]的上下箭头*/

.inputNumber input[type="number"] {

-moz-appearance: textfield;

}

此时效果:

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

哈哈,就是这么简单,本以为可以挖煤收工了,却收到测试发消息说,手动输入可以输入负数,输入数字以外的字母e也可以,卧槽,百密一疏啊!

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

原来在input="number"的时候还是能输入'-'和'e',是因为在正常情况下e不是数字所以不能被输入,原因是e在数学上代表2.71828,所以它也还是一个数字,好吧,一行js搞定它。

关键代码:

οnkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"

另外,如果我们想限制位数时除了maxlength之外还可以这样写:

关键代码:

οninput="if(value.length>14)value=value.slice(0,14)"

总结

以上就是我在项目中遇到的input=’number相关问题,并解决input=’number’能输入e和负数的问题,通过css去掉了上下箭头方法,并附加解决了一下限制位数时除了maxlength之外其他的限制input输入位数方法,自己做一下笔记记录,也希望对大家有用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值