javascript备忘
1.0 阻止浏览器自动填充
将 autocomplete="off" 添加到 <form> 标签上,而非<input>标签
某些情况下,若autocomplete不生效,则可以将input的readonly属性设为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 ;前端不应该对后端返回的波动数字做修复处理;因为,运算后的数字(尤其是金额)应该由后端处理,后端才是“数据权威”,必须保证一致性、安全性和可追溯性;若前端对数字进行修复后展示,意味着将错误的数据显示给用户,因为修复后的数字与数据库中实际的准确数据不一致。