我如何解决这个jquery / ajax问题?

时间:2015-12-24 16:16:10

标签: jquery ajax

我有4个这样的文字输入,

<input type="text" name="amount" id="amount">
<input type="text" name="commission" id="commission">
<input type="text" name="discount" id="discount">
<input type="text" name="total_amount" id="total_amount">

我在这里根据total_amount的值计算#amount。要做到这一点,我使用像这样的ajax,

var minlength = 2;
$("#amount").on('input', function () {
  var value  = $(this).val(), 
  if (value.length >= minlength ) {
    $.ajax({
      type: "POST",
      url: "includes/transactions/proccess_amount.php",
      data: {'amount':value},          
      success: function(response) {
        response = jQuery.parseJSON(response)
        $('#make_transaction')
          .find('[name="commission"]').val(response.commission).end()
          .find('[name="total_amount"]').val(response.total_amount).end(); 
      }    
    });
  } 
});

现在,如果total_amount字段值为#discount,我想再次更改keyup。所以我为#discount keyup创建了一个ajax请求,它为我工作。

var strLength = 1; $("#discount").keyup(function () { var discount = $(this).val(), amount = $('#amount').val(), comison = $('#commission').val(), total = $('#total_amount').val(); if (discount.length >= strLength ) { $.ajax({ type: "POST", url: "includes/transactions/proccess_discount.php", data: { 'amount':amount , 'comison': comison , 'total' : total , 'discount': discount }, success: function(response) { response = jQuery.parseJSON(response) $('#amount_dolar').val(''); $('#make_transaction') .find('[name="amount_dolar"]').val(response.amount).end() .find('[name="total_amount"]').val(response.totalAfterDiscount).end(); } }); } }); 脚本看起来像这样。

total_amount

我的问题是,当折扣字段为空时,我想显示之前的{{1}}。在这个阶段,它始终显示折扣总额。

更新: 带有输出的图像可以更好地理解。 enter image description here

有人可以告诉你怎么做吗? 谢谢。

3 个答案:

答案 0 :(得分:0)

我建议在成功&#39;中再次使用#amount ajax电话。对#discount调用的响应部分。问题似乎是#amount ajax正在调用proccess_amount.php而#discount ajax正在调用proccess_discount.php。

答案 1 :(得分:0)

在您正在进行ajax调用的折扣输入的keyup中保留cookie中的初始总金额,当折扣变为null或为空时,将该总帐户从cookie添加到总金额输入。

答案 2 :(得分:0)

答案取决于response.totalAfterDiscount

中的内容

简单的解决方案是使用或运算符||

.val(response.totalAfterDiscount || response.amount)

但问题是,如果totalAfterDiscount为零(可能是100%折扣销售)而不是显示金额而不是折扣。

因此,下一个选项取决于没有折扣时totalAfterDiscount持有的内容。

如果它包含空字符串

.val(response.totalAfterDiscount.length ?  response.totalAfterDiscount : response.amount)

如果未定义

.val(response.totalAfterDiscount!==undefined ? response.totalAfterDiscount : response.amount)