javascript
  • jquery
  • asp.net
  • gridview
  • 2015-11-10 231 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

    相關問題