javascript
  • jquery
  • asp.net
  • gridview
  • 2015-11-10 303 views 0 likes 
    0

    嗨,在JavaScript代码中,乘法在txtQuantity之间,这是在网格视图中的文本框TemplateField和网格视图中的BoundField的价格。使用jquery在gridview中计算行总数和总计

    我的问题是我的网格视图已经txtQuantity和txtPrice既是TemplateFieldes

    <ItemTemplate><asp:TextBox ID="txtprice" runat="server" Text='<%# Bind("Price") %>'></asp:TextBox></ItemTemplate> 
    
    <ItemTemplate><asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox></ItemTemplate> 
    

    我试图修改Java脚本代码

    $("[id*=lblTotal]", row).html(parseFloat($("[id*=txtprice]", row).html()) * parseFloat($(this).val())); 
    

    ,但它给我NaN乘法结果

    原始的js代码

    <script type="text/javascript"> 
     
        $(function() { 
     
         $("[id*=txtQuantity]").val("0"); 
     
        }); 
     
        $("[id*=txtQuantity]").live("change", function() { 
     
         if (isNaN(parseInt($(this).val()))) { 
     
          $(this).val('0'); 
     
         } else { 
     
          $(this).val(parseInt($(this).val()).toString()); 
     
         } 
     
        }); 
     
        $("[id*=txtQuantity]").live("keyup", function() { 
     
         if (!jQuery.trim($(this).val()) == '') { 
     
          if (!isNaN(parseFloat($(this).val()))) { 
     
           var row = $(this).closest("tr"); 
     
           $("[id*=lblTotal]", row).html(parseFloat($(".price", row).html()) * parseFloat($(this).val())); 
     
          } 
     
         } else { 
     
          $(this).val(''); 
     
         } 
     
         var grandTotal = 0; 
     
         $("[id*=lblTotal]").each(function() { 
     
          grandTotal = grandTotal + parseFloat($(this).html()); 
     
         }); 
     
         $("[id*=lblGrandTotal]").html(grandTotal.toString()); 
     
        }); 
     
    </script>

    回答

    0

    有你的代码中的一些小问题,试试这个:

    $(function() { 
     
        $("[id*=txtQuantity").val("0"); 
     
    }); 
     
    $(document).on("change", "[id*=txtQuantity]", function() { 
     
        if (isNaN(parseInt($(this).val()))) { 
     
        $(this).val('0'); 
     
        } else { 
     
        $(this).val(parseInt($(this).val()).toString()); 
     
        } 
     
    }); 
     
    $(document).on("keyup mouseup", "[id*=txtQuantity]", function() { 
     
        if (!jQuery.trim($(this).val()) == '') { 
     
        if (!isNaN(parseFloat($(this).val()))) { 
     
         var row = $(this).closest("tr"); 
     
         $("[id*=lblTotal]", row).html(parseFloat($("[id*=txtPrice]", row).val()) * parseFloat($(this).val())); 
     
        } 
     
        } else { 
     
        $(this).val(''); 
     
        } 
     
        var grandTotal = 0; 
     
        $("[id*=lblTotal]").each(function() { 
     
        var value = $(this).html(); 
     
        if(value != "") 
     
         grandTotal = grandTotal + parseFloat(value); 
     
        }); 
     
        $("[id*=lblGrandTotal]").html(grandTotal.toString()); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <table cellspacing="5"> 
     
        <tr> 
     
        <td><input type="text" id="txtPrice1" value="100" /></td> 
     
        <td><input type="text" id="txtQuantity1" value="1" /></td> 
     
        <td><div id="lblTotal1" /></td> 
     
        </tr> 
     
        <tr> 
     
        <td><input type="text" id="txtPrice2" value="200" /></td> 
     
        <td><input type="text" id="txtQuantity2" value="2" /></td> 
     
        <td><div id="lblTotal1" /></td> 
     
        </tr> 
     
        <tr> 
     
        <td><input type="text" id="txtPrice3" value="300" /></td> 
     
        <td><input type="text" id="txtQuantity3" value="3" /></td> 
     
        <td><div id="lblTotal1" /></td> 
     
        </tr> 
     
    </table> 
     
    <div id="lblGrandTotal" />

    +0

    得益于它完美地工作,但我为我设置文本框的TextMode = “数”它显示上下箭头来增加或减少数字的JS代码工作只有当我键入数字它可能使js代码工作与两种方法?谢谢 – user5109118

    +0

    将'keyup'事件改为'keyup mouseup'。看到我更新的答案。 –

    +0

    谢谢你,先生,它的工作 – user5109118

    相关问题