多个嵌套字段上的jQuery仅适用于第一个

时间:2016-08-12 05:05:14

标签: javascript jquery ruby-on-rails ruby-on-rails-4 coffeescript

我正在寻求jQueries的一些帮助,因为我在这方面很弱。我已经在订单上成功实现了jQuery,只要通过collection_select下拉菜单选择product_id,就可以在文本字段中显示产品价格。

我的表格如下:

<%= form_for(@order) do |f| %>
.
.
.
<%= f.add_nested_fields_link :single_orders, "Add Product" %>
<%= f.nested_fields_for :single_orders do |builder| %>
  <div class = "form-inline">
    <%= builder.collection_select :product_id, @products, :id, :select_product, {:prompt => "choose product"}, {:class => "product_selection form-control"}  %>
    <%= builder.text_field :ctn_price, placeholder: "Price/carton", id: "ctn_price", readonly: true, class: 'ctn_price_field form-control' %>
    <%= builder.text_field :qty, placeholder: "Quantity",id: "quantity", class: 'form-control' %>
    <%= builder.text_field :price, placeholder: "Amount", id: "amount", readonly: true, class: 'form-control' %>
    <%= builder.remove_nested_fields_link %>
  </div>
<% end %>
.
.
.
<%= f.submit "place order", class: "btn btn-primary" %>
<% end %>

我能够通过orders.js.coffee文件

通过jQuery获取product_prices
jQuery ->
  $(".product_selection").on "change", ->
      $.ajax
        url: "/orders/get_product_prices"
        type: "GET"
        dataType: "script"
        data:
          product_id: $('.product_selection option:selected').val()

并使用get_product_prices.js.erb

显示它
$('.ctn_price_field').val(<%= @product.price %>)    

一切正在接受当我添加超过1个嵌套字段时,jQuery似乎只能检测第一个嵌套字段并且只更改第一个.ctn_price_field我想要完成的是生成多个嵌套字段这个相同的表格,能够根据所选产品更改每​​个nested_field:price。在此先感谢!!

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您需要为该类运行每个以访问与同一个类关联的所有元素。喜欢 -

$(".product_selection").each(function() {
    // ...
});

确保在元素以HTML格式绑定后调用此绑定。

或者您可以使用 -

$('.product_selection').change(function(){
   // code goes here
});