问题: 在第一行下面添加的任何行总是给出第一行的乘积。
下面提到的HTML有一个jQuery脚本,用于计算表行的两个输入字段值的乘积。第一个之后的多行也面临同样的问题。
注意:这不是我的整个文件,只是我遇到问题的部分。
window.close()
答案 0 :(得分:1)
好吧,试试吧。不要硬编码访问元素的方式。这有时会让生活变得困难。只需使用event
,您就可以完成本项目的所有操作。
$(document).ready(function(){
$('.calc').on("keypress", function(e) {
/* ENTER PRESSED*/
if (e.keyCode == 13) {
var ptag4 = 1;
var ptag1 = $(e.target).parent().prev().find("input").val();
var ptag2 = $(e.target).val();
$(this).append(ptag4 + "," + ptag1 + "," + ptag2 + ", ");
var ptag3 = ptag1*ptag2;
//troubleshoot value fetch
$(e.target).parent().next().html(ptag3);
}
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<body>
<table class="calc">
<tbody><tr class="ka">
<th>Kōmoku-mei</th>
<th>Kakaku</th>
<th>Ryō</th>
<th>Gōkei</th>
</tr>
<tr class="ka">
<td class="kom">
Gom Kōmoku
</td>
<td class="ryo">
<input readonly="readonly" class="shit" type="text" name="val1" value="23">
</td>
<td class="qty">
<input class="kin" type="text" name="val1" value="1">
</td>
<td class="gokei">
276
</td>
<td class="closeb">
X
</td>
</tr>
<tr class="ka">
<td class="kom">
Gom Kōmoku
</td>
<td class="ryo">
<input readonly="readonly" type="text" name="val1" value="23">
</td>
<td class="qty">
<input class="kin" type="text" name="val1" value="1">
</td>
<td class="gokei">
276
</td>
<td class="closeb">
X
</td>
</tr>
<tr class="ka">
<td class="kom">
Gom Kōmoku
</td>
<td class="ryo">
<input readonly="readonly" type="text" name="val1" value="23">
</td>
<td class="qty">
<input class="kin" type="text" name="val1" value="1">
</td>
<td class="gokei">
276
</td>
<td class="closeb">
X
</td>
</tr>
</table>
</body>
&#13;
答案 1 :(得分:0)
我认为问题在于您的选择器。它总是为您提供前两个输入框。使用.closest()
选择器解决问题的众多方法之一。距离最近,您将获得最接近的文本框。
详细了解.closesst
:https://api.jquery.com/closest/