当在另一个字段中为简单POS选择产品名称时,我试图在一个字段中获取产品的价格。它第一次运作良好,但是当我为下一个产品添加另一个表格行时,我没有得到价格。请帮忙
changed_var = "bb"
def Check():
changed_var = "xx"
app = Flask(__name__)
@app.route("/")
def server_1():
render_template_string('index.html', changed_var="bb")
app.run()
动态添加另一行
<tbody>
<tr>
<td><input class="case" type="checkbox"/></td>
<td><input type="text" data-type="productCode" name="itemNo[]" id="itemNo_1" class="form-control itemNo" contenteditable="true"></td>
<td><input type="text" data-type="productName" name="itemName[]" id="itemName_1" class="form-control search_canteen_prod chk_product for_Price" autocomplete="off"></td>
<td><input type="number" name="price[]" id="price_1" readonly class="form-control changesNo price for_Price New_price" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
<td><input type="number" name="quantity[]" id="quantity_1" class="form-control changesNo quantity" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
<td><input type="text" name="total[]" readonly id="total_1" class="form-control totalLinePrice totalPrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>
</tr>
</tbody>
根据自动填充选择
获取价格var i=$('table tr').length;
$(".addmore").on('click',function(){
html = '<tr>';
html += '<td><input class="case" type="checkbox"/></td>';
html += '<td><input type= data-type="productCode" name="itemNo[]" id="itemNo_'+i+'" class="form-control autocomplete_txt itemNo" contenteditable="true"></td>';
html += '<td><input type="text" data-type="productName" name="itemName[]" id="itemName_'+i+'" class="form-control search_canteen_prod chk_product for_Price" autocomplete="off"></td>';
html += '<td><input type="number" name="price[]" id="price_'+i+'" class="form-control changesNo price New_price for_Price" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" readonly></td>';
html += '<td><input type="text" name="quantity[]" id="quantity_'+i+'" class="form-control changesNo quantity" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;"></td>';
html += '<td><input type="text" name="total[]" id="total_'+i+'" class="form-control totalLinePrice totalPrice" autocomplete="off" onkeypress="return IsNumeric(event);" ondrop="return false;" onpaste="return false;" readonly></td>';
html += '</tr> <script>$( ".search_canteen_prod" ).autocomplete({source: "canteen/search_for_product.php"});</script>';
$('table').append(html);
i++;
});
获取
的价格//get product prices
$('.chk_product').on('change, keyup, blur', function() {
iid_arr = $('.chk_product').attr('id');
iid = iid_arr.split("_");
var prodd_name = $('.chk_product').val();
$.ajax({
url:"canteen/select_for_canteen_sales.php",
method: "POST",
data:{prodd_name: prodd_name},
dataType: "JSON",
success:function(data)
{
$('#price_'+iid[1]).val(data.selling_price);
} }); });
答案 0 :(得分:0)
首先:
如果仅在添加下一个表行以生成i
后使用表长度,则对于您添加的下一个表行,它将为1 ...因为您已经有一行(html ID类似于{ {1}}等。)
这意味着您下次添加的行也将以1结尾。
要解决此问题,您应该将itemNo_1
函数中的i + 1
用于任何新表行的html-id。所以他们从例如.addmore
adn开始然后从那里上去。
其次:
您可以获取相对于当前对象的值(使用itemNo_2
访问) - 您不需要通过ID获取它们。
例如,而不是:
$(this)
尝试类似:
$('.chk_product').on('change, keyup, blur', function() {
iid_arr = $('.chk_product').attr('id');
iid = iid_arr.split("_");
var prodd_name = $('.chk_product').val();
价格 - 您也可以进行相对树遍历...例如,如果价格总是&#34;上涨到td,然后下降到价格&#34;你可以这样做:
$('.chk_product').on('change, keyup, blur', function() {
var prodd_name = $(this).val();
注意:您需要对此进行错误测试,我建议您查找文档以了解其工作原理。