2010-01-12 85 views
1

订单页面有一个部分,用户可以在其中添加新字段以添加新产品。他们从下拉菜单中选择一种产品,并将其价格写入另一列。我需要添加一项功能,允许用户输入数量,并且一旦数量发生变化,总价就会更新。我用下面的代码尝试了它,但是我总是收到0的总价。乘以两个字段

我的代码。

$('#AddProduct').click(function() { 
    var i = 0; 
    var adding = $(+(i++)+'<div class="row'+(i)+'"><div class="column width50"><input type="text" id="PRODUCTNAME" name="PRODUCTNAME'+(i)+'" value="" class="width98" /><input type="hidden" class="PRODUCTID" name="PRODUCTID" /><input type="hidden" class="UNITPRICE" name="UNITPRICE'+(i)+'" /><small>Search Products</small></div><div class="column width20"><input type="text" class="UNITQUANTITY" name="UNITQUANTITY'+(i)+'" value="" class="width98" /><small>Quantity</small></div><div class="column width30"><span class="prices">Unit Price:<span class="UNITPRICE"></span><br />Total Price:<span class="TOTALPRICE"></span><br /><a href="#" id="RemoveProduct(".row'+(i)+'");">Remove</a></span></div>');  
    $('#OrderProducts').append(adding); 

    adding.find("#PRODUCTNAME").autocomplete("orders.cs.asp?Process=ListProducts", { 
     selectFirst: false 
    }).result(function(event, data, formatted) { 
     if (data) { 
      adding.find(".UNITPRICE").html(data[1]); 
      adding.find(".PRODUCTID").val(data[2]); 
      adding.find(".TOTALPRICE").html(data[1] * $('.UNITQUANTITY').val()); 
     } 
    }); 

    return false; 
}); 


      <div id="OrderProducts"> 
       <a href="#" id="AddProduct"><img src="icons/add.png" alt="Add" /></a> 
      </div> 

回答

0

您功能似乎作用于汽车的完整结果如此以来,.UNITQUANTITY可能没有被设置,除非你把一个值的UNITQUANTITY你选择之前,不会得到其他然后0什么自动完成。但是你需要保留这个函数,但是可能在UNITQUANTITY中添加一个默认值1,然后添加另一个函数来处理UNITQUANTITY值已经改变的事件,然后执行那个内联函数的最后一行,你应该得到你想要的结果。

我建议在返回false之前添加以下内容;

adding.find(".UNITQUANTITY").change(function() 
    { 
    adding.find(".TOTALPRICE").html(adding.find(".UNITPRICE").val() * adding.find(".UNITQUANTITY").val()); 
    }); 

还可以编辑内联函数来执行下列操作...

adding.find(".UNITPRICE").html(data[1]); 
adding.find(".UNITPRICE").val(data[1]); 
adding.find(".PRODUCTID").val(data[2]); 
adding.find(".TOTALPRICE").html(data[1] * $('.UNITQUANTITY').val()); 

你的第一线被设定单价的HTML,但不是VAL所以,当我们试图以检索与。 val()它返回0

另外作为一个注意事项,你应该考虑增加一些小数到2位小数,以确保你不会结束小数点以上的总价格。

单价:50.99

总价:2804.4500000000003

+0

杰夫,加入1没有解决我的问题。我想知道如何几个小时看不到。但我仍然不知道如何添加其他功能,以便每次更改数量时都会更新字段。 – 2010-01-12 06:17:16

+0

我刚刚用提示编辑了我的答案。嗯,我有点困,所以它可能不完全正确。但它应该指向正确的方向。 – 2010-01-12 06:18:55

+0

好吧,这对我来说似乎是正确的。我试过了,但没有奏效。当我更新数量字段时,我再次获得总价格0。 – 2010-01-12 06:28:12