【发布时间】:2020-09-12 23:54:18
【问题描述】:
这是我模板的一部分:
<form method="POST">
{{ form.hidden_tag() }}
<table id="myTable">
<tr class="heading">
<td>
Item
</td>
<td>
Price
</td>
</tr>
<div id="itemstable">
{% if items|length > 0 %}
{% for item in items %}
<tr class="item">
<td>
<input id="item-{{ item.id }}" name="description-{{ item.id }}" required="" type="text" value="{{ item.description }}" >
</td>
<td>
<input id="item-{{ item.id }}" name="amount-{{ item.id }}" required="" type="number" min="0" value="{{ item.amount }}" onchange="sumamount();">
</td>
</tr>
{% endfor %}
{% else %}
<tr class="item">
<div>
<td>
<input id="item-{{ items|length }}" name="description-{{ items|length }}" required="" type="text" value="{{form.description}}">
</td>
<td>
<input id="item-{{ items|length }}" name="amount-{{ items|length }}" required="" type="text" value="{{form.amount}}" onchange="sumamount();">
</td>
</div>
</tr>
{% endif %}
</div>
</table>
<table>
<tr class="total">
<div>
<td>
Total:
</td>
<td>
<input id="total" type="text" value="0"readonly>
</td>
</div>
</tr>
</table>
<button id="add" onclick="addLineItem(event)">Add Item</button>
<div>
</form>
<script>
// function to add a row in table
let currMax = {{ items|length }} + 1;
function addLineItem(e){
var lineItem = "<tr class='item'> <td> <input id='item-"+currMax+"' name='description-"+currMax+"' required='' type='text' value=''></td> <td> <input id='item-"+currMax+"' name='amount-"+currMax+"' required='' type='text' value=''></td> </tr>";
currMax++;
document.getElementById('myTable').innerHTML += lineItem;
e.preventDefault();
console.log("Still on page!");
}
function sumamount(){
sum=0;
$("input[name^='amount-']").each(function(){
sum+=Number($(this).val());
});
$("#total").val(sum);
}
</script>
我创建了一个添加一行的按钮(函数 addLineItem(e))。 但是当我提交我的表格时。在请求中,这个添加的行不在请求中,我的第二个问题是这个新行没有在我的 js 函数 sumamount() 中考虑(除非我在金额字段中填写内容,否则值直到 0。
感谢您帮助解决此问题。
【问题讨论】:
标签: javascript templates flask