无论culturename,货币符号如何,都将文本框转换为float?

时间:2012-05-16 14:04:41

标签: jquery asp.net asp.net-ajax

我有一个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 + " %");
                }
            });
        });

2 个答案:

答案 0 :(得分:2)

nl-BE的数字格式与en-US不同。 9,999,999.99编号为9.999.999,99parseFloat期望9999999.99,但是用于清理字符串的正则表达式会删除逗号,而应删除这些逗号并用逗号替换逗号。

答案 1 :(得分:1)

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

使用荷兰语/比利时语言代码时,

Globalize.parseFloat('€9,99')会返回9.99