我有一个
HTML表,每行都有一些td.其中一个td包含一个数字输入框.
我现在正在尝试使用jQuery获取输入的数字,将其乘以同一行中另一个td内的数字,然后将结果显示在另一个td(同一行)中,但到目前为止我似乎无法得到它工作.
不确定我是否遗漏了一些简单的东西,或者我完全不合适
这是我的HTML
<table class="my-table">
<thead>
<tr>
<td>Header 1</td>
<td>Header 2</td>
<td>Header 3</td>
<td>Header 4</td>
</tr>
</thead>
<tbody>
<tr data-row-num="1">
<td>Item 1</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
<tr data-row-num="1">
<td>Item 2</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
<tr data-row-num="1">
<td>Item 3</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
</tbody>
</table>
到目前为止,这是我的jQuery
//Finds inputted text in table and binds to function calculateSum?
$(function () {
var tbl = $('.my-table');
tbl.find('input[type=number]').bind("keyup", function () {
calculateSum();
});
});
//Finds numerator and multiplies by input, outputs result?
function calculateSum() {
var tbl = $('.my-table');
tbl.find('tr').each(function () {
var numeratorValue = $(this).find('.numerator');
var numerator = numeratorValue.html;
$(this).find('input[type=number]').each(function () {
var result = $(this).val * numerator;
$('.rowtotal').html('£' + result);
});
});
}
任何帮助最受赞赏
谢谢
最佳答案 使用输入事件而不是键盘,这将适用于任何类型的值更改.取父tr,然后在其中找到.numerator文本.之后,将输入值与.numerator文本相乘,并将其设置为.rowtotal.
$('input[type=number]').on("input", function () {
var tr = $(this).closest('tr');
var num = this.value;
var numerator = tr.find('.numerator').text();
tr.find('.rowtotal').text('£' + num * numerator);
});
完整代码
$('input[type=number]').on("input", function () {
var tr = $(this).closest('tr');
var num = this.value;
var numerator = tr.find('.numerator').text();
tr.find('.rowtotal').text('£' + num * numerator);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="my-table">
<thead>
<tr>
<td>Header 1</td>
<td>Header 2</td>
<td>Header 3</td>
<td>Header 4</td>
</tr>
</thead>
<tbody>
<tr data-row-num="1">
<td>Item 1</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
<tr data-row-num="1">
<td>Item 2</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
<tr data-row-num="1">
<td>Item 3</td>
<td><span class="numerator">10</span> / 1</td>
<td><form><input type="number"></form></td>
<td class="rowtotal">£0</td>
</tr>
</tbody>
</table>