我有一个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 + " %");
}
});
});
答案 0 :(得分:2)
nl-BE
的数字格式与en-US
不同。 9,999,999.99
编号为9.999.999,99
。 parseFloat
期望9999999.99
,但是用于清理字符串的正则表达式会删除逗号,而应删除这些逗号并用逗号替换逗号。
答案 1 :(得分:1)
Globalize javascript库可以处理这种情况。使用正确的语言代码Globalize.culture(languageCode);
初始化库后,您可以使用Globalize
版本的parseFloat
处理不同的货币符号和数字分隔符。例如,
Globalize.parseFloat('€9,99')
会返回9.99
。