javascript - 单击时保存复选框的状态

标签 javascript html ruby-on-rails

<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>

目标:拥有提交 onclick 的复选框,同时保留其他未修改的复选框的状态

我有一堆复选框,单击它们时会提交表单。单击后,它们将返回同一页面,并包含新的 GET 数据。上面的代码是一种 hack,适用于一个复选框。但由于我这样做的方式,它不适用于多个复选框。

这似乎不是这样做的方法。我相信正确的答案是使用 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? %>如果不检查它的值,这样的条件就会变成假。

所以删除这些冗余条件后更优化的代码是,

      <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>

关于javascript - 单击时保存复选框的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17640778/

相关文章:

javascript - 相同代码的两个版本返回不同的结果

javascript - MediaWiki WikiEditor 工具栏高度大小 100%

html - 如何使页脚响应图像

ruby-on-rails - ControllerNameController 中的 ActiveRecord::StatementInvalid#create SQLite3::SQLException:没有这样的列:

php - 国家名称在数据库中存储为整数/数字是否比包含其名称的字符串更好?

javascript - 如何加快html元素的更新?

javascript - 超链接滑动新页面而不是打开它们

javascript - jquery "on"动态项目问题

Java Web 应用程序最佳实践

ruby-on-rails - 按哈希表中的值排序 - Ruby