失效原因
maxlength HTML5
如果 type 的值是 text, email, search, password, tel, 或 url,那么这个属性指明了用户最多可以输入的字符个数(按照Unicode编码方式计数);对于其他类型的输入框,该属性被忽略。它可以大于 size 属性的值。如果不指定这个属性,那么用户可以输入任意多的字符。如果指定为一个负值,那么元素表现出默认行为,即用户可以输入任意多的字符。本属性的约束规则,仅在元素的 value 属性发生变化时才会执行。
规范地址查看:规范查看
根据规范可知,maxlength对于类型为number的输入框无效
解决方式
效果ok:
<input type="text" maxlength="18" />
失效:
<input type="number" maxlength="18" />
有效解决:
//html
<input type="number" oninput="if(value.length>18)value=value.slice(0,18)" />
//js
//输入框为数字类型时防止maxlength属性不起作用 maxL=18
$('input').bind('input propertychange', function() {
if($(this).attr("type")=="number"){
//获取输入框的最大长度
var mxaL= $(this).attr("maxlength");
//如果输入的长度超过最大长度
if($(this).val().length>maxL){
$(this).val($(this).val().slice(0,maxL));
}
}
});