在javascript计算后保存时,值不会更新

时间:2013-10-03 15:59:41

标签: c# javascript jquery asp.net .net

我的表单上有textboxes个。几笔费用和余额。

当费用textboxes改变时,我使用javascript来计算余额:

$(document).ready(function () {


    // add up main numbers
    $("input[class*='add']").change(function (event) {
        var sum = 0;
        var subsum = 0;
        var num = 0;
        $("input[class*='add']").each(function (event) {
            num = parseInt($(this).val()) || 0;
            sum = sum + num;
        });
        $("input[class*='minus']").each(function (event) {
            num = parseInt($(this).val()) || 0;
            sum = sum - num;
        });
        $("input[class*='addcost']").each(function (event) {
            num = parseInt($(this).val()) || 0;
            subsum = subsum + num;
        });
        var balance = $("input[id*='txtBegBal']").val() - sum;
        $("input[id*='txtEnding']").val(balance);
        $("input[id*='txtTotalCost']").val(subsum);
    });

结果在屏幕上显示正确,但是当我点击“保存”时,txtTotalCost仍会显示值,在javascript更新之前,所以它无法正确保存。

有人可以指点我正确的方向吗?

我在if (!Page.IsPostBack)内完成所有填充。我为“费用”更改的值很好地传递,它只是计算字段不是。

2 个答案:

答案 0 :(得分:2)

这里只是猜测但是txtTotalCost被禁用了吗? 禁用的文本字段不会像这样更新,因为客户端浏览器在禁用时不会将表单数据发送回服务器。在这种情况下,您将获得viewstate中的旧值。尝试启用它,或者您可以使用标签和隐藏的输入字段。

答案 1 :(得分:0)

第二个建议是您的字段尚未存在。尝试使用

 $("input[class*='add']").on('change', function() { 
     // your code here 
 });