记录一些程序中遇到的有意思的BUG
1.19.3.13遇到一个vue中使用input的bug
情况:需要验证19位的纯数字的账户
实际操作:<input id="accountNo" v-model.number="accountNo" type="number" oninput="if(value.length>=19)value=value.slice(0,19)" placeholder="请输入账号">
bug问题:实际使用过程中当输入大于17位的数,input失焦后超出17位会被四舍五入到17位,以后全是0;
bug原理: input在type=number的时候当输入长度超出17位时候会运行number()为之后转科学计数法做准备,在input显示正常,实际v-model的值已经被处理过了
解决方案:$("#accountNo").bind("input propertychange", function (event) {
var value=$("#accountNo").val()
if (value.length >= 19) { vm._data.accountNo=value.substr(0, 19);$("#accountNo").val(value.substr(0, 19));}});
在input手动绑定事件然后取外域值做判断并且修改实例中绑定值从而跳过自动修改的操作