【问题标题】:jQuery submit method not submitting entire formjQuery提交方法不提交整个表单
【发布时间】:2014-05-07 16:10:28
【问题描述】:

我过滤面板用于过滤搜索结果。当用户单击复选框时,ajax 会触发提交。但是,它似乎只提交了该复选框的值,而不是之前可能单击的其他复选框。

任何帮助将不胜感激。

JS

$("#filter_menu2 input:checkbox").click ->
    console.log $(this).parents('form')
    $(this).prop('checked', true)
    $(this).parents('form').submit()
    return

search.js.erb

$("#products").html("<%= escape_javascript(render(:partial=>'new_shop/shop_search_results')).html_safe %>")

复选框

<ul>
            <%= form_tag "/search", id: "styles", method: :get, remote: true do %>
                <% @styles.each do |style| %>
                    <li>
                      <label>
                        <%= check_box_tag "search", style.name.downcase, nil, id: style.name.downcase, rel: style.name.downcase %>
                        <%= style.name %>
                      </label>
                    </li>
                <% end %>
            <% end %>
          </ul>



<form accept-charset="UTF-8" action="/search" data-remote="true" id="styles" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
                    <li>
                      <label>
                        <input id="classic" name="search" rel="classic" type="checkbox" value="classic" />
                        Classic
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="modern" name="search" rel="modern" type="checkbox" value="modern" />
                        Modern
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="contemporary" name="search" rel="contemporary" type="checkbox" value="contemporary" />
                        Contemporary
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="vintage" name="search" rel="vintage" type="checkbox" value="vintage" />
                        Vintage
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="urban" name="search" rel="urban" type="checkbox" value="urban" />
                        Urban
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="mid-century" name="search" rel="mid-century" type="checkbox" value="mid-century" />
                        Mid-Century
                      </label>
                    </li>
                    <li>
                      <label>
                        <input id="traditional " name="search" rel="traditional " type="checkbox" value="traditional " />
                        Traditional 
                      </label>
                    </li>
</form>

选中“经典”时第一次提交的 puts 参数

params = {"utf8"=>"✓", "search"=>"classic", "controller"=>"new_shop", "action"=>"search"}

当“经典”已经被选中并且“现代”被选中时,第一次提交的 puts 参数

params = {"utf8"=>"✓", "search"=>"modern", "controller"=>"new_shop", "action"=>"search"}

【问题讨论】:

  • 以前点击过的复选框?您的 AJAX 请求在哪里?你每次都序列化表单数据吗?
  • 以前选中的复选框,就像用户选中一个然后选中另一个一样。第一个不在参数列表中。好吧,我想没有ajax请求......只是提交方法。我想我不是每次都序列化表单数据。我所做的一切都在上面。
  • 您能否发布一些实际呈现的相关表单的标记?
  • 好的,我把上面的html贴出来了

标签: javascript jquery ruby-on-rails ajax forms


【解决方案1】:

我认为这会对您有所帮助,但请随时提出更多问题 - http://jsfiddle.net/jayblanchard/UwLAS/

$("#styles :checkbox").click(function () {
    $('#styles :checkbox:checked').each(function() {
        console.log( $(this).val() );
    });
    $('#styles').submit();
});

此外,我刚刚注意到您所有的复选框都带有相同的名称 -

name="search"

因为您可以选择此复选框的多个倍数,所以您应该将它们命名为一个数组 - 当收到它们时,您将在服务器端将它们作为一个数组处理:

name="search[]"

【讨论】:

  • 是的,它仍然表现得好像它只是提交与所有选中复选框相对的当前复选框的值。不过感谢您的努力。
  • 哎呀,我想我现在明白了。我刚刚注意到一些我会添加到我的答案中的东西。编辑:添加到我的答案中
  • 您看到编辑了吗?你有机会试试吗?
  • 我做到了,谢谢。我会将其标记为已回答。仍然有一点麻烦,但至少我已经传递了所有参数。谢谢!
  • 我现在明白了。我只需要将一个字符串传递给太阳黑子宝石的搜索方法。
猜你喜欢
  • 2013-09-30
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多