Я работаю с jquery и нуждаюсь в помощи для вычисления значений ввода зависит от опции выбора, вставленной динамически. я хочу, если значение select является дебетовым, оно вычитает из выбранного значения кредита и разницы в id diff, поскольку я вставлял больше всех значений, рассчитываемых по дебету и кредиту.
<table class="vtable">
<tr>
<td>Type</td>
<td>Amount</td>
</tr>
<tr>
<td>
<select name="type" id="type">
<option>-type -</option>
<option value="debit">debit</option>
<option value="credit">credit</option>
</select>
</td>
<td><input type="text" id="amount"></td>
</tr>
</table>
Демо-версия моей скрипки ниже
благодаря
Попробуй это
$(document).on('change', 'select', function () {
var value = $(this).val();
var input = $(this).parents('td').next('td').find('input:text');
if (value == 'debit') {
total -= parseInt(input.val());
} else if (value == 'credit') {
total += parseInt(input.val());
}
$('#diff').html('Differance:' + total);
});
Надеюсь, это поможет, спасибо
одна проблема исправлена в more
кнопок обработчиков щелчка. см. приведенные ниже изменения:
$("#more").click(function() {
$(".vtable tr:last").clone().find("input, select").each(function() {
$(this).attr({'id': function(_, id) { return id + 1 }});
}).end().appendTo(".vtable");
});
чтобы обрабатывать события для динамически добавленного текста select
и input
, вы можете добиться этого следующим образом.
Примечание: .on()
используется с вашей таблицей, так как вы динамически добавляете строки с помощью выбора и ввода текста.
для select
:
$('.vtable').on('change', "select", function (e) {
var valueSelected = this.value;
alert(valueSelected);
});
для input
текста
$('.vtable').on('keyup', "input", function (e) {
var valueEntered = this.value;
alert(valueEntered );
});
как насчет чего-то подобного?
$('select[name="type"]').change(function()
{
if($(this).val() === 'credit')
{
$("#amount").val() += $('input[type="text"]').val()
}
else if($(this).val() === 'debit')
{
$("#amount").val() -= $('input[type="text"]').val()
}
})
Я использую функцию change(), чтобы вызвать изменение. Я не знаю, это то, что вы имели в виду, но я надеюсь, что это помогло.
$('select#type').on('change', function() {
if($(this).val() === "debit"){
//Get the difference between 2 variables and store result in diff
$("#diff").val(Math.abs(a - b))
}else if($(this).val() === "credit"){
//perform addition and store value in sum object
$("#sum").val(x+y)
}
});