javascript - 如何检查 form.reset() 是否改变了任何东西
问题描述
js中有没有办法检查reset()
表单的功能是否真的改变了某些东西。重置将表单输入重置为默认值。但是如果当前值已经是默认值,我想注意到它reset()
没有效果。万一reset()
改变了我想调用的东西foo()
,万一重置没有效果我想调用bar()
。如果不比较之前和之后的每个输入字段,这是否可以优雅地实现?
解决方案
使用FormData的简短(但不是最好的)方法:
const form = document.forms[0];
function run() {
const data = new FormData(form);
form.reset();
const resetData = new FormData(form);
if (
JSON.stringify([...data.entries()]) ===
JSON.stringify([...resetData.entries()])
){
console.log('foo');
} else {
console.log('bar');
}
}
<form>
<input name=i1 />
<input name=i2 />
</form>
<button onclick="run()">Reset & Check</button>
推荐阅读
- javascript - 直接链接到具有多个模态的开放模态
- php - 为什么不返回 JSON?
- datatable - 数据表 PDF 从右到左导出
- numeric - perl6 Function floor 对数字和字符串的工作方式不同?
- intel - 英特尔 SGX 远程证明如何工作?
- git - 如何避免每次拉动时都藏起来?
- python - 根据其他已知的 k/v 对从嵌套 json 中提取 k/v 对
- amazon-web-services - AWS Educate Starter Account 使用 boto3 在 Python 中获取凭证
- reactjs - 无法解析样式化组件的流依赖
- c# - 使用 C# .Net Gmail API,为什么我不能打印收件箱中的电子邮件数量?