2012-05-16 58 views
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 + " %"); 
       } 
      }); 
     }); 
+0

由於包含歐元符號'parseFloat($(「#TxtVatExcluded」).val()。replace(/ [^ \ d。]/g,「」)); – rt2800

回答

1

Globalize javascript庫可以處理這種情況。使用正確的語言代碼Globalize.culture(languageCode);初始化庫後,可以使用處理不同貨幣符號和數字分隔符的版本的parseFloat。例如,使用荷蘭語/比利時語言代碼時,

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

2

nl-BE數字格式是不一樣的en-US。編號9,999,999.99寫爲9.999.999,99parseFloat預計爲9999999.99,但用於清理字符串的正則表達式會刪除逗號,而應刪除點並用逗號替換逗號。

相關問題