input maxlength 属性不起作用

大家经常会遇到限制某个输入框的最大长度的需求,比如一个要求输入手机号的输入框:

<input type="text" placeholder="请输入手机号码" maxlength="11" />

如果是上面的写法的话,maxlength属性是有效的。但是type=”text”有一个不好的体验,就是获取焦点后弹出的输入法是默认拼音的那种,不太适合此处要求纯数字的需求。那么自然会想到改为type=”number”,改为后你会奔溃, 竟然发现maxlength属性不起作用了,可以无限地输入。
我们来看下type的属性值:
这里写图片描述
由上可以看出html5中的新类型:color, date, datetime, datetime-local, month, week, time, email, number, range, search, tel 以及 url。
发现number类型不行后,后面去试了下tel类型,发现maxlength属性又变有效了。


总结:
移动h5开发中遇到输入框需要默认弹出数字键盘,且又不想写代码去控制文本长度的话,可以使用type="tel"配合maxlength="n",弹出的也是数字键盘不过会存在一个‘-’的固话间隔符号。不过这影响不大的,因为为了可拓展性,肯定还是需要写些js代码去判断内容的有效性,比如正则表达式。
当然不嫌麻烦的话,还是可以用type="number"的,只需在oninput onpropertychange 事件中去截取字符串长度即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值