【问题标题】:Submit multiple forms with one class on blur (jquery, rails)在模糊(jquery,rails)上提交具有一类的多个表单
【发布时间】:2015-10-02 17:02:18
【问题描述】:

我的购物车中有多种形式的产品具有相同的类别 ('.edit_order_item')。我需要的是在我关注其字段('.cart-quantity')时提交表单。此代码仅工作一次(对于第一个字段),第一次触发后无效:

$('.cart-quantity').blur(function(){
    $(this).closest('form').submit();
}); 

我正在使用 AJAX 和 Rails:

cart.html.erb:

<% @order_items.each do |order_item| %>
    <%= render 'carts/cart_row', product: order_item.product, order_item: order_item %>
<% end %>

_cart_row.html.erb:

<%= form_for order_item, remote: true do |f| %>
    <%= f.number_field :color_quantity, value: order_item.color_quantity.to_i, min: 0, class: "form-control cart-quantity" %>
<% end %>

助手生成的HTML代码:

<form class="edit_order_item" id="edit_order_item_192" action="/order_items/192" accept-charset="UTF-8" data-remote="true" method="post">
    <input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="_method" value="patch" />
    <input value="0" class="form-control cart-quantity" type="number" name="order_item[color_quantity]" id="order_item_color_quantity" />       
</form>

(x times)

我做错了什么?可能的解决方案是什么?谢谢。

UPD 我刚刚注意到表单助手会生成多个具有相同 ID 的对象。会不会是问题?不过,我不是指 id。

【问题讨论】:

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


    【解决方案1】:

    这很可能与具有相同 ID 的多个元素有关。我还建议以不同的方式编写 jQuery。

    $('.edit_order_item').on('blur', '.cart-quantity', function() {
        $(this).closest('form').submit();
    });
    

    请参阅this fiddle 以获得工作演示。

    【讨论】:

    • 感谢亚当的回答。由于某种原因,即使在页面上使用单个 id 元素,此代码以及原始代码也无法正常工作。我找到了一个替代解决方案:我可以提交而不是关注焦点,而是提交,并且 Rails 足够聪明,可以开箱即用。你必须有一个提交按钮,但你可以用 css 隐藏它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多