0

私はからjQueryマスクプラグインを使用しています

http://digitalbush.com/projects/masked-input-plugin/

プラグインをカスタマイズしたいのですが、最善を尽くしましたが、できません。

私が欲しいのは

  1. 数字しか入力できません。
  2. すべての数字は、3番目の数字ごとに自動的にフォーマットされます(、)。
  3. (。)の後の2桁のみ

私はこのマスクを使用しています:

$("#product").mask("999,999,999.99",{placeholder:" "});

これに伴う問題は、150.50だけを入力する必要がある場合、正確な場所とタイプにカーソルを合わせる必要があることです。

たとえば、上記のマスクで150.50と入力すると、テキストボックスは次のようになります。 [][][],[][][],150.50 ここで、[]は空白です。私が欲しいのは、余分な(、)を付けずに、150.50だけを表示することです。
1150.50と入力すると、1,150.50が表示されますが、入力が完了するとフォーマットが自動的に行われるようにし、余分な(、)を表示したくない場合。

4

2 に答える 2

2

ギャビーの答えは正しく、私のものよりはるかに多くのオプションを提供します。しかし、私はあなたの特定のニーズのための解決策を作り上げました。ここでそれを表示します。

$('input').bind('keyup blur', function(){
    var i, j, final = '', input = $(this),
        raw = input.val().replace(/[^\d]/g, '');
    while (raw.substr(0, 1) === '0' && raw.length > 2) { //remove leading 0s for large numbers
        raw = raw.substr(1);
    }
    while (raw.length < 2) { //pad with up to two 0s for small numbers
        raw = '0' + raw;
    }
    for (i = 1; i <= raw.length; i++) { //format the number as ##,###,###.##
        j = raw.length - i;
        final =
            (i === 2 ? '.' : ((i + 1) % 3) === 0 && i != raw.length ? ',' : '')
            + raw.substr(j, 1)
            + final;
    }
    input.val(final);
});
于 2010-07-25T11:03:49.500 に答える
1

マスキングプラグインではなく、フォーマットプラグインが必要です。

http://plugins.jquery.com/project/number_formatをご覧ください

于 2010-07-25T10:39:50.520 に答える