Я пытаюсь получить значение скрытого поля (span class="hiddenfield"
) в соседнем элементе div для ввода.
Я не могу просто использовать элемент 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>
Я использую логику из этой ссылки , которая говорит, что я должен перейти к общему родителю обоих input
и span
и использовать оттуда find()
, что, как я думал, я сделал используя .form-element
.
С благодарностью получена любая помощь.