单击时保存复选框的状态
Saving the state of checkboxes onclick
<form name="form_name" action="/" method="get">
<% if params["title"].present?%>
<% if params["title"] == "1" %>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title <input name="title" type="hidden" value="0" />
<%else%>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title
<%end%>
<%else%>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1">Title
<%end%>
<% if params["description"].present?%>
<% if params["description"] == "1" %>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description <input name="description" type="hidden" value="0" />
<%else%>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Title
<%end%>
<%else%>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1">Title
<%end%>
</form>
目标: 具有在单击时提交的复选框,同时保留其他未修改复选框的状态
我有一堆复选框,当它们被点击时提交表格。 单击时,它们会返回到同一页面,其中包含新的 GET 数据。 上面的代码是一种黑客,适用于一个复选框。 但是由于我这样做的方式,它不适用于多个复选框。
这似乎不是这样做的方法。 我相信正确的答案是确定是否选中了javascript或jquery的复选框。 我对这两个都不满意,所以如果有人能把我引向正确的方向......
问题是冗余的隐藏输入,
<form name="form_name" action="/" method="get">
<% if params["title"].present?%>
<% if params["title"] == "1" %>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title
<%else%>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title
<%end%>
<%else%>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1">Title
<%end%>
<% if params["description"].present? %>
<% if params["description"] == "1" %>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description
<%else%>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Description
<%end%>
<%else%>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1">Description
<%end%>
</form>
如果复选框未选中,它们将提交零值,但浏览器的好处是,它不会提交未选中的复选框,并且<% if params["description"].present? %>
此类条件在不检查其值的情况下变为 false。
因此,在删除此类冗余条件后,更优化的代码是,
<form name="form_name" action="/" method="get">
<% if params["title"] == "1" %>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title
<%else%>
<input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title
<%end%>
<% if params["description"] == "1" %>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description
<%else%>
<input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Description
<%end%>
</form>
相关文章:
- 角度复选框不会保持选中状态
- 复选框保持React JS中各组件的状态
- jQuery复选框被锁定为选中状态
- 主干-复选框保持选中状态
- 基于复选框状态的条件数学
- 导航到另一个页面后,复选框状态会更改
- 处于特定状态的复选框
- 如何创建至少 1 个框处于活动状态的复选框列表
- 如何根据各种复选框状态执行操作
- 使用 javascript 获取复选框的状态
- 按钮未启用,如果复选框处于打开状态
- 如何保存动态创建的复选框的更改状态
- 检查复选框状态-Javascript
- 创建一个复选框按钮的散列,这些按钮在单击时在Twitter Bootstrap Button组中处于活动状态
- 多个复选框中的一个应始终保持未选中状态
- Twitter引导程序:删除/切换类似复选框的按钮组的活动状态
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- 带有角度指令的三状态复选框
- ReactJS自定义三状态复选框将不显示复选标记
- 表示单页应用程序的用户配置状态(复选框、选择列表)的标准做法