JavaScript获取相邻div中span的值

时间:2018-11-07 15:59:00

标签: javascript ruby-on-rails

我试图在输入的相邻div中检索隐藏字段(span class="hiddenfield")的值。

我不能仅仅使用getbyelement,因为我已经使用了引导网格系统来复制诸如环境之类的表,因此会有许多行具有相同的隐藏输入,每一行的值都不相同。

控制台仅显示console.log(stock_id)的空值,而不是隐藏字段中的值。

<div class="container">
<div class="row">

  <div class="col-sm-2 col-form-label">Product Code</div>
  <div class="col-sm-3 col-form-label">Product Description</div>
  <div class="col-sm-1 col-form-label">UOI</div>
  <div class="col-sm-1 col-form-label text-right">Avail</div>
  <div class="col-sm-2 col-form-label">Price £</div>
  <div class="col-sm-1 col-form-label">Margin</div>
  <div class="col-sm-2 col-form-label">Qty Rqd</div>
</div>

<% @stock_items.each do |stock| %>
   <%= form_tag new_line_customer_opportunity_sop_header_sop_details_path(@customer,@opportunity, @sop_header), :method => 'get' do %>
   <div style="margin-top: -4px;" class="form-group row form-element row-bottom-margin">
    <div class="col-sm-2"><font size="-1"><%= stock.product_code %></font></div>
    <div class="col-sm-3"><font size="-1"><%= stock.desc1.titleize %></font></div>
    <div class="col-sm-1 text-right form-group"><font size="-1"><%= stock.uoi %></font></div>
    <div class="col-sm-1 text-right"><font size="-1"><%= strip_trailing_zero(stock.qty_free) %></font></div>
    <div class="col-sm-2"><%= number_field_tag 'unit_price', number_with_precision(stock.price, :precision => 2), class: 'form-control text-right sales_price' %></div>
    <div class="col-sm-1 text-right margin"><font size="-1"><%= number_to_percentage(((stock.price-stock.cost_sop)/stock.price)*100,precision: 0)%></font></div>
    <div class="col-sm-1 stock"><%= number_field_tag 'quantity', 1, class: 'form-control text-right' %></div>
    <div class="col-sm-1"><span class="hiddenfield"><%= hidden_field_tag 'stock_id', stock.id %></span><%= submit_tag 'Add' %></div>
    </div>

  <% end %>
<% end %>
</div>

我的JavaScript

<script type="text/javascript">

$(".sales_price").on('change', function(){
 var input = $(this)
 console.log(input)

 var sales_price = input.val()? input.val() : 0;
 console.log(sales_price)

 var stock_id = input.closest('.form-element').find('.hiddenfield').text()
 console.log(stock_id)

})
</script>

我正在使用link中的逻辑,即我应该遍历inputspan的共同父级,并从那里使用find()-以为我已经使用.form-element完成了。

非常感谢您的帮助。

0 个答案:

没有答案