轨。关于字段模糊的jQuery表单提交

时间:2016-01-08 15:47:15

标签: javascript jquery ruby-on-rails forms

在我的应用程序中,有一个带有has_many order_items的订单模型。

订购页面:

<div id="cart-rows">
    <% @order_items.each do |order_item| %>
    <%= render 'orders/cart_row', product: order_item.product, order_item: order_item %>
    <% end %>
</div>

cart_row partial(每个order_item):

<div class="cart-row col-xs-12" id="order-item-<%= order_item.id %>">
<h3><%= product.name %></h3>

<div class="col-md-9 col-sm-8 col-xs-9 cart-form-wrapper">

    <%= form_for order_item, remote: true do |f| %>

        <%= f.text_field :color_quantity, value: order_item.color_quantity.to_i,
                                                                        min: 0, class: "form-control cart-quantity" %>

        <h4>
            &nbsp;x&nbsp;<%= order_item.var_price("color") %>
            <i class='glyphicon glyphicon-ruble'></i>
        </h4>

        <% if order_item.color_quantity > 0 %>
            <h4>
                &nbsp;= <%= order_item.color_quantity * order_item.var_price("color") %>
                <i class='glyphicon glyphicon-ruble'></i>
            </h4>
        <% end %>

        <%= f.hidden_field :product_id, value: product.id %>

        <%= f.submit "", class: "btn-hidden submit-cart-row" %>

        <h4>
            Total: <%= order_item.item_total %>
            <i class='glyphicon glyphicon-ruble'></i>
        </h4>
    <% end %>
</div>

在每一行中都有一个表格,其中包含每种产品的类型和数量。 当表单提交时,当前cart_row中的信息(每种类型的总价格及其数量)将使用jquery重新计算:

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

我想每次在场模糊时提交它。 问题是它可以工作但仅适用于第一次模糊。当我改变另一个领域并模糊时,没有任何反应。否则,如果我正常点击输入表格更新。
我在控制台中没有看到任何错误。服务器日志为空,因为没有任何反应:on blur动作不会触发。它必须是一些javascript错误,但我无法追踪它。

订单商品控制器:

class OrderItemsController < ApplicationController
    before_action :set_order
    before_action :set_order_item, only: [:update, :destroy]

  def create
    @order_item = @order.order_items.new(order_item_params)
    @order.save
    session[:order_id] = @order.id
  end

  def update
    @order_item.update_attributes(order_item_params)
    @order_items = @order.order_items

  end

  def destroy
    @order_item.destroy
    @order_items = @order.order_items
  end

    private

    def set_order
        @order = current_order
    end

    def set_order_item
        @order_item = @order.order_items.find(params[:id])
    end

    def order_item_params 
        params.require(:order_item).permit(:color_quantity, :high_quantity, :spec_quantity, :product_id)
    end

end

谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了导致错误的原因。 我正在使用一种草率的方法更新购物车部分,类似于 $(".shopping-cart").load(document.URL + ' .shopping-cart'); 所以这是一个原因。