【问题标题】:Add 2 numbers and show result on label with comma's添加 2 个数字并用逗号在标签上显示结果
【发布时间】:2016-12-05 12:15:07
【问题描述】:

我正在为某些功能编写一些代码

我的第一个文本框

<asp:TextBox ID="txtLeasePaymentFixed" type="text" runat="server" class="number" CssClass="form-control" Style="text-align: right" TabIndex="101"  placeholder="e.g 123,456,789"  onKeyUp="fncCalculateSum()" onBlur="fncCalculateSum()"></asp:TextBox>

我的第二个文本框是

<asp:TextBox ID="txtLeasePaymentVairable" type="text" runat="server" CssClass="form-control" Style="text-align: right" TabIndex="102"  placeholder="e.g 123,456,789" onKeyUp="fncCalculateSum()" onBlur="fncCalculateSum()"></asp:TextBox>

Toltal 显示的标签是这样的

   <asp:Label ID="lbltotal" runat="server" Text=""></asp:Label>

调用onblur和onkeyUp的函数是这样的:

function fncCalculateSum() {


        var LeasePaymentFixed = $('#MainContent_txtLeasePaymentFixed');
        var LeasePaymentVariable = $('#MainContent_txtLeasePaymentVairable');
        if (LeasePaymentFixed.val() == '' || LeasePaymentFixed.val() == null) {
            PaymentFixed = 0;
        }
        else {
            PaymentFixed = parseFloat(LeasePaymentFixed.val());
        }
        if (LeasePaymentVariable.val() == '' || LeasePaymentVariable.val() == null) {
            PaymentVariable = 0;
        }
        else {
            PaymentVariable = parseFloat(LeasePaymentVariable.val());
        }


        (Sum) = PaymentFixed + PaymentVariable

        if ((LeasePaymentFixed.val().trim() == '' && LeasePaymentVariable.val().trim() == '') || (LeasePaymentFixed.val() == null && LeasePaymentVariable.val() == null)) {
            $("#MainContent_lbltotal").text('');
        }
        else {

            $("#MainContent_lbltotal").html(parseFloat(Sum));
        }

    }

现在我使用 jQuery 代码在这样的每 3 个数字之后应用国际格式的逗号

        $('#MainContent_txtLeasePaymentFixed,#MainContent_txtLeasePaymentVairable,#MainContent_lbltotal').keyup(function(event){
            // skip for arrow keys
            if(event.which >= 37 && event.which <= 40){
                event.preventDefault();
            }
            var $this = $(this);
            var num = $this.val().replace(/,/gi, "").split("").reverse().join("");

            var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));

            console.log(num2);


            // the following line has been simplified. Revision history contains original.
            $this.val(num2);
        });


        function RemoveRougeChar(convertString){


            if(convertString.substring(0,1) == ","){

                return convertString.substring(1, convertString.length)            

            }
            return convertString;

        }

当我在第一个文本框中输入数字时,它带有逗号,这很好。 当我在第二个文本框中写入时也是如此,但它不显示标签上所有数字的总和。

【问题讨论】:

    标签: javascript jquery .net add client-side


    【解决方案1】:

    小心!您使用逗号丢失数据到 parseFloat 转换:

    let foo = 21231323.246;
    let bar = foo.toLocaleString("en-US"); // "21,231,323.246"
    
    console.log(parseFloat(bar)); // 21
    

    您应该检查您的转化并确保您使用正确的数字。

    【讨论】:

    • 谢谢,我知道逗号不能在 parseflot 中,但我如何才能传递结果,然后将其转换为 parse float
    • 我可能会将数字的值(格式化前)存储在DOM element's dataset(例如el.dataset.value = number;)中。这样您就可以更轻松地获得原始值。
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2021-05-11
    • 2021-08-11
    • 1970-01-01
    • 2015-04-15
    • 2015-03-24
    • 2014-07-03
    • 2020-06-03
    相关资源
    最近更新 更多