【发布时间】:2010-06-10 19:04:57
【问题描述】:
我有一个搜索表单,默认情况下会选中几个复选框。当表单作为 GET 提交时,url 将仅包含选中的复选框列表。
http://www.example.com/page/?checkbox1=yes&checkbox2=yes
在这种情况下,很难确定用户第一次到达此搜索页面的时间与他们提交表单时所有复选框都未选中的时间之间的差异,因为查询字符串看起来相同。
为了解决这个问题,我开始在复选框前注入一个具有相同名称和“否”值的隐藏字段。当复选框未选中时,浏览器将发送隐藏字段的 no 值,当复选框被设置时,浏览器将使用复选框的“是”值覆盖隐藏字段。
<input type="hidden" name="checkbox1" value="no" />
<input type="checkbox" name="checkbox1" value="yes" />
当用户提交未选中所有复选框的表单时,我得到这个查询字符串:
http://www.example.com/page/?checkbox1=no&checkbox2=no
这似乎适用于 ff、chrome、ie5.5+,所以我可以安全地使用这种方法,还是有更好的方法让复选框像输入和选择一样提交?
【问题讨论】: