单击时保存复选框的状态

Saving the state of checkboxes onclick

本文关键字:状态 复选框 保存 单击      更新时间:2023-09-26
<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>