javascript备忘

1.0 阻止浏览器自动填充

autocomplete="off" 添加到 <form> 标签上,而非<input>标签

某些情况下,若autocomplete不生效,则可以将inputreadonly属性设为true,并在页面渲染完成100ms后再设为false,此法兼容性强、确定性高;


2.0 深复制对象

var item = "{'fds':23}";
var itemCopy = JSON.parse(JSON.stringify(item)); // 深复制;


3.0 字典转FormData

var currOperation = {"key":1};

var formData = new FormData;
Object.keys(currOperation).forEach((key) => {
     formData.append(key,currOperation[key]);
});


4.0 禁止回车提交表单

如果<form>表单中只有一个<input>,则在按下回车键时,表单就会被提交;如果不想回车提交表单,就在<from>表单中再添加一个<input>标签,如下:

  <input style="display:none;">


5.0 浮点数波动

接口返回的数字在浏览器中会直接显示时不会出现小数位波动,因此前端原样显示即可;只有当前端对数字进行运算显示时才可能出现小数波动,因此对前端运算显示的数字必须做 toFixed 处理;如下:

var toFixed = function (value, digits) {
    // 使用 parseFloat 可去掉小数点后多余的0
    return parseFloat(value.toFixed(digits));
}

注:后端接口必须保证返回的数字不能有波动位,例如: 0.30000000000000004 ;前端不应该对后端返回的波动数字做修复处理;因为,运算后的数字(尤其是金额)应该由后端处理,后端才是“数据权威”,必须保证一致性、安全性和可追溯性;若前端对数字进行修复后展示,意味着将错误的数据显示给用户,因为修复后的数字与数据库中实际的准确数据不一致。




举报

© 著作权归作者所有


0