У меня есть функция jQuery Coffeescript, которая запускается при загрузке страницы. Функции захватывают строку таблицы, тогда это цена, количество и скидки и обрабатывает значения, чтобы определить общее количество для строки.Запуск jQuery Coffeescript при изменении ввода
В настоящее время я запускаю функцию на загрузке страницы, но также хотел бы, чтобы она запускалась в любое время, когда изменяются значения ввода формы. Обратите внимание: эта форма используется на rails f.fields_for, которая генерирует несколько форм, а также дополнительные динамически сгенерированные формы.
Какой будет самый суровый способ сделать это?
$('tr.order-item').each ->
q = $(this).find('.quantity_input')
.val()
quantity = parseInt(q)
p = $(this).find('.price').text().replace("$", "")
price = parseFloat(p.replace(/,/g, ''), 10)
d = $(this).find('.discount_input').val()
discount = parseFloat(d)
total = price * quantity - discount
total_price = "$"+ parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString()
$(this).find('.item-total').text(total_price)
form_for полей
<tr class="order-item">
<td>
<div class="btn-group">
<button type="button" class="btn-u dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-angle-down"></i>
</button>
<ul class="dropdown-menu" role="menu">
<li>
</li>
<%= f.hidden_field :_destroy %>
<%= link_to "Remove Item", '#', class: "remove_fields btn btn-link" %>
<li><button class="btn btn-link">Add Custom Item</button></li>
<li><button class="btn btn-link">Remove Item</button></li>
</ul>
</div>
</td>
<td>
<h5 class="product"><%= f.object.product.name %></h5>
<%= f.hidden_field :product_id, class:"product-id" %>
<%= f.hidden_field :id, class:"id" %>
</td>
<td>
<h5 class="text-right"><span style="color: green" class="price"><%= number_to_currency f.object.unit_price %></span></h5>
</td>
<td>
<%= f.number_field :quantity, min: 1, hide_label: true, class:"quantity_input" %>
</td>
<td>
<%= f.text_field :discount, hide_label: true, class:"discount_input" %>
</td>
<td>
<h5 class="text-right"><span style="color: green" class="item-total"></span></h5>
</td>
Я бы хотел, чтобы он слушал событие .on 'change', поэтому вам не нужно слушать ключ. Будет ли ключ работать над строками, которые были изменены? –
Тогда, возможно, вместо запятой замените '.' поскольку 'parseFloat (2,4)' не будет работать, как вы ожидаете, до –
bugger, он также ломается при добавлении дополнительных элементов через ajax .. –