【发布时间】:2021-12-10 20:47:54
【问题描述】:
假设我有一个这样的表单:
<form id="something_form">
<input type="text" id="thing1" name="thing1">
<input type="hidden" id="thing2" name="thing2">
<input type="text" id="secret" name="secret">
<input type="submit">
</form>
目前我有 JS 监听提交事件,获取 secret 输入中的信息,并在将其添加到 thing2 之前做一些工作。服务器从不使用或不需要secret。我可以在提交表单之前清除secret中的数据,所以它只是thing1=abc&thing2=abc&secret=,但是如果用户关闭了JS,那么表单提交请求将有thing1=abc&thing2=&secret=secret。
是否有一种纯 HTML 方法可以使输入正常工作,但不会在表单提交时序列化/提交?我知道我可以删除 name="secret" 来实现这一点,但这会让我失去任何依赖 name 属性的功能。
我的解决方案是在没有name="secret" 的情况下呈现页面:
<input type="text" id="secret">
然后通过JS添加(因为如果用户打开了JS,它会运行):
document.getElementById("secret").setAttribute("name", "secret");
但我很好奇是否有其他解决方案。
【问题讨论】:
标签: html