【发布时间】:2016-09-12 04:18:54
【问题描述】:
我有一个带有动态功能的表来添加行。这意味着用户可以添加任意数量的结果。
这些行有一个选择字段和一个文本输入字段。当用户从选择字段中选择一个值时,文本输入字段将填充 Ajax 调用给出的结果与表单上的另一个输入字段相乘。
我得到了结果,但问题是每行中的每个文本输入都填充了相同的结果。
这是我的代码: HTML
<table>
<tr class="items2"><td><select id="Account" value="1">ajax text</td><td><input class "amount"/></td></tr>
<tr class="items2"><td><select id="Account-1" value="2">ajax text</td><td><input class "amount"/></td></tr>
</table>
jquery:
<script>
$("select[id*='Account']").change(function(){
subjectId=$(this).val();
console.log(subjectId);
var sale=$("#id_sale").val();
console.log(sale);
request_url = '{% url "taxrate" pk=0 %}'.replace('0', subjectId);
console.log( "request_url = " + request_url);
$.ajax({
url: request_url,
type: "GET",
dataType: 'json',
}).done(function(data, textStatus, jqXHR) {
$.each(data, function(n, obj){
$("tr.items2").each(function () {
$('.amount',this).val( ((sale*obj.fields.rate)/100).toFixed(2));
})
})
})
});
</script>
我的代码有什么错误?我只是前端的新手。
图像:在图像中,您可以看到文本输入在两个框中都显示为 140。但是只有当我选择另一个行选择项时它才应该显示金额。金额应根据为该行传递的 ajax 值计算。
JSfiddle 没有 ajax 部分:
https://jsfiddle.net/tL86dsmc/
$("select[id*='Account']").change(function(){
subjectId=$(this).val();
var sale=$("#id_sale").val();
var tax_rate = ((sale * .10)).toFixed(2);
$(".amount").val(tax_rate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="id_sale" value=100>
<table>
<tr class="items2">
<td>
<select id="Account-1" value="1">
<option value="" selected="selected">---------</option>
<option value="1">tax @18%</option>
<option value="2">Tax @ 17%</option>
</select>
</td>
<td>
<input id="amount-2" class="amount">
</td>
</tr>
<tr class="items2">
<td>
<select id="Account-2" value="1">
<option value="" selected="selected">---------</option>
<option value="1">tax @18%</option>
<option value="2">Tax @ 17%</option>
</select>
</td>
<td>
<input id="amount-2" class="amount">
</td>
</tr>
</table>
【问题讨论】:
-
<iselect>是什么元素?它应该有一个结束标签吗?为什么有多个元素具有相同的id? -
@Teemu 将其更改为
-
data是单个对象还是数组? -
@RIYAJKHAN 数据是一个数组,但包含单行。
-
还没有解决方案!!!
标签: javascript jquery frontend