根据另一个填写输入

时间:2018-02-02 02:22:05

标签: javascript php jquery

当在另一个字段中为简单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);

          }     }); });  

1 个答案:

答案 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();

注意:您需要对此进行错误测试,我建议您查找文档以了解其工作原理。