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-BEと同じではありませんen-US。番号9,999,999.99が書かれて9.999.999,99います。parseFloat期待9999999.99していますが、文字列をクリーンアップするために使用する正規表現は、代わりにドットを削除してコンマをドットに置き換える必要があるときに、コンマを削除します。

于 2012-05-16T14:13:11.773 に答える
1

Globalize JavaScript ライブラリは、このシナリオを処理できます。ライブラリが正しい言語コードで初期化されると、異なる通貨記号と数字の区切り記号を処理するバージョンをGlobalize.culture(languageCode);使用できます。例えば、GlobalizeparseFloat

Globalize.parseFloat('€9,99')9.99オランダ語/ベルギーの言語コードを使用すると返されます。

于 2012-05-16T14:29:12.420 に答える