0

我有一个 jquery 函数,它应该根据文本框值进行计算。

该文本框有一个 maskededit 扩展器,默认情况下它显示美元符号,并且计算有效。

当我添加culturename 属性时,它显示欧元符号,但随后计算停止工作并返回NaN

<ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender1" runat="server"
TargetControlID="TxtVatIncluded" 
Mask="9,999,999.99"
MessageValidatorTip="true" 
OnFocusCssClass="MaskedEditFocus" 
OnInvalidCssClass="MaskedEditError"
MaskType="Number" 
InputDirection="RightToLeft" 
DisplayMoney="Left" CultureName="nl-BE"
/> 




 $(document).ready(function () {
            $("#TxtVatExcluded").focusout(function () {
                debugger;
                var invoicedAmmount = $("#MainContent_VehicleInformationControl_LblInvoicePriceValue").text().replace(/[^\d.]/g, "");
                if (invoicedAmmount > 0) {
                    var ammountWithoutVat = parseFloat($("#TxtVatExcluded").val().replace(/[^\d.]/g, ""));
                    var result = ((ammountWithoutVat / invoicedAmmount) * 100).toFixed(2);
                    $("#MainContent_LblPercentage").html(result + " %");
                }
            });
        });
4

2 回答 2

2

的数字格式nl-BEen-US. 数字9,999,999.99是写的9.999.999,99parseFloat期望9999999.99但是您用来清理字符串的正则表达式会删除逗号,而它应该删除点并用点替换逗号。

于 2012-05-16T14:13:11.773 回答
1

Globalize javascript 库可以处理这种情况。使用正确的语言代码初始化库后Globalize.culture(languageCode);,您可以使用处理不同货币符号和数字分隔符的Globalize版本。parseFloat例如,

Globalize.parseFloat('€9,99')9.99使用荷兰语/比利时语言代码时返回。

于 2012-05-16T14:29:12.420 回答