41

私はモバイル バンキング アプリケーションを開発しており、通貨金額の入力をリアルタイムでフォーマットすることに関心があります。

私はすでにautoNumeric プラグインjQuery Format Currency プラグインをテストしましたが、どちらも Android 2.* ブラウザーでカーソル位置の問題があります。

このブラウザと互換性のある JavaScript ソリューションを持っている人はいますか?

4

4 に答える 4

1

autoNumericについてはわかりませんが、http: //code.google.com/p/jquery-formatcurrency/はかなり良さそうです。あなたが投稿したjsFiddleの例では、私のデスクトップブラウザーにキャレットが正しく配置されていませんが、これは私の(Jellybean)Androidフォンにも正しく配置されています。(Gingerbreadでは、点滅しているカーソルバーが行の終わりにジャンプする場合がありますが、最後の場所を編集し続けます。)デモを試してください:http://www.bendewey.com/code/formatcurrency/demo/format_as_you_type .html

于 2012-09-04T10:57:47.057 に答える
1

普段accounting.jsを使っていますhttp://openexchangerates.github.io/accounting.js/#downloadからダウンロードできます

使い方はとても簡単です。同じダウンロード ページから、その仕組みを確認できます。

カーソル管理に使用する JavaScript 関数をいくつか作成しました。

        function formatMoney(myField){
            if(myField.selectionStart || myField.selectionStart == '0'){
                var len = myField.value.length;
                var caretPos = doGetCaretPosition(myField);
                myField.value = accounting.formatMoney(myField.value);
                var newlen = myField.value.length;
                setCaretPosition(myField, newlen != len ? (newlen > len ? caretPos + 1 : caretPos - 1) : caretPos);
            }
        }
        function doGetCaretPosition (ctrl) {

            var CaretPos = 0;
            // IE Support
            if (document.selection) {

                ctrl.focus ();
                var Sel = document.selection.createRange ();

                Sel.moveStart ('character', -ctrl.value.length);

                CaretPos = Sel.text.length;
            }
            // Firefox support
            else if (ctrl.selectionStart || ctrl.selectionStart == '0')
                CaretPos = ctrl.selectionStart;

            return (CaretPos);

        }
        function setCaretPosition(elem, caretPos) {
            elem.value = elem.value;
            if(elem != null) {
                if(elem.createTextRange) {
                    var range = elem.createTextRange();
                    range.move('character', caretPos);
                    range.select();
                }
                else {
                    if(elem.selectionStart) {
                        elem.focus();
                        elem.setSelectionRange(caretPos, caretPos);
                    }
                    else
                        elem.focus();
                }
            }
        }

関数は、テキスト フィールドで次のように使用できます。

<input id="myField" type="text" onkeyup="formatMoney(this);" onChange="formatMoney(this);" onBlur="formatMoney(this);" />

取得および設定キャレット位置関数は、ここから取得されました: Set keyboard caret position in html textbox

Android 2.1エミュレーターでテストしました。エミュレーターは遅かったですが、動作しているように見えました。スクリーンショットはこちらにあります: https://www.dropbox.com/s/9ximuwh64kadiea/shot.JPG?dl=0

于 2015-03-23T06:37:10.773 に答える
0

これはオープンソースで、よく貢献され、よくコミットされたライブラリです: https://github.com/plentz/jquery-maskmoney

あなたのニーズに答えているようですね。ただし、Androidでテストしていません。

于 2015-03-23T23:40:29.940 に答える