7

以下のようにjQueryとformatCurrency拡張機能を使用します。

        $(function() {
            $(".currency").blur(function(){ formatCurrencyInput(this) });
        });

        function formatCurrencyInput(input) {
            if($(input).val() != '') {
                if(isNumeric($(input).val())) {
                    $(input).formatCurrency(null,{groupDigits:false,roundToDecimalPlace:2,symbol:'£'});
                    $(input).css('border-color', '');
                }
                else {
                    $(input).css('border-color', '#FFCCCC');
                }
            }
        }

「currency」クラスを使用したすべてのテキスト入力は、たとえば45=>£45.00から変換されます。

奇妙なことに、formatCurrencyInput関数がセクションで定義されていれば、正常に機能します。関数を.jsファイルに外部化すると、£45.00が返されます(Â文字に注意してください)。これは文字エンコードの問題だと思いますが、どうすれば修正できますか?

4

5 に答える 5

6

試す:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
    </head>
...

£に変更してみることもできます&pound;

于 2012-11-12T21:20:07.017 に答える
4

JavaScript ファイルで非 Ascii 文字を使用する場合は、サーバーが適切な HTTP ヘッダーを送信して、文字エンコーディングを識別していることを確認する必要があります。charsetファイルを参照するために使用される要素内のパラメーターscriptや、何らかの方法で (参照する HTML ドキュメントから) エンコーディングをデフォルトに設定するブラウザーに依存するなどの他の方法は、信頼性が低いと見なされます。

ただし、文字列リテラルに非 ASCII 文字が 1 つしかない場合、最も簡単な方法はそれをエスケープすることです。\xA3ポンド記号「£」 U+00A3 は、文字列リテラル内で asまたは as としてエスケープできます\u00A3

于 2012-11-12T21:44:46.077 に答える