2015-10-02 48 views
1

我的購物車中有多種形式的產品('.edit_order_item')。我需要的是當我將注意力集中在其領域('.cart-quantity')時提交表單。此代碼只有一次(第一場),並具有第一火災後沒有效果:提交多個表單與模糊(jquery,rails)上的一個類

$('.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來提及的。

回答

0

這很好,可以有多個具有相同ID的元素。我還建議寫jQuery有點不同。

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

請參閱this fiddle進行工作演示。

+0

謝謝你的回答亞當。 出於某種原因,即使在頁面上使用單個id元素,此代碼以及原始代碼也無法正常工作。 我找到了一種替代解決方案:對我來說沒有關注焦點,但輸入和導軌足夠聰明,可以開箱即用。你必須有一個提交按鈕,但你可以用CSS隱藏它。 –