1

私はいくつかの入力フィールドを持つ巨大なフォームを持っています。これは残高と損益シートであるため、入力テキストフィールドは「お金」としてフォーマットする必要があります。フォーマットを行うための素晴らしいjQueryプラグインを見つけました:accounting JSですが、今はすべてのフィールドで手動で呼び出す必要があり、これは私が思う最良の方法ではありません...

キーダウンのすべての入力テキストフィールドでaccounting.formatMoney()関数を呼び出すにはどうすればよいですか?したがって、FORMまたはBODYにKeyDownまたはKeyUpイベントがある場合、スクリプトはすべての入力フィールドを検索し、スクリプトを実行します。

これは、すべてのINPUTテキストフィールドで呼び出したいフォーマットとJavascript関数です。

var options = {
    symbol : "",
    thousand: " ",
    precision : 0,
    format: "%v%s"
};

var tmp = parseInt(document.getElementById('input_id').value, 10);
document.getElementById('input_id').value = accounting.formatMoney(tmp, options);

フォームはAJAXを介してBODYに返送されるため、次のように関数を呼び出すのが最善の方法だと思います。

    $(document).ready(function(){
        $('body').on('keyup', 'input', function(e){
                    // collect all input fields and execute the function
        });
    });

助けてくれてありがとう!

4

2 に答える 2

2

あなたはするかもしれません

$(document).ready(function(){
    $('body').on('keyup', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

ただし、これは、ユーザーが入力中に入力を変更することを望んでいることを前提としています。

ユーザーがフィールドを離れるとき、または「Enter」と入力するときに入力を変更する場合は、次のようにします。

$(document).ready(function(){
    $('body').on('blur change', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

実際のアプリケーションでは、セレクターをより選択的にするために('input.money'の代わりに'input')入力にクラスがあることに注意してください。

編集 :

がであるテーブルの入力にこれを適用する場合idbstable、次のようにします。

$(document).ready(function(){
    $('#bstable').on('blur change', 'input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});

テーブルがajaxを介して取得され、bstableすぐにここにない場合は、次のようにすることができます

$(document).ready(function(){
    $(document.body).on('blur change', '#bstable input', function(){
            $(this).val(accounting.formatMoney($(this).val(), options));
    });
});
于 2012-11-07T09:45:04.520 に答える
0
$('body').on('keyup', 'input', function(){
       $("body").find("input").each(function(index, element){
            $(element).val(accounting.formatMoney($(element).val(), options));
       });
});
于 2012-11-07T09:49:01.140 に答える