0

ユーザーがドルの金額しか入力できないように、入力を制限する必要があります。これは、数字の文字列を入力できることを意味し、オプションで小数点と 0 ~ 2 桁の数字が続きます。カンマもドル記号もありません。

これに適したパターンだと思うものを見つけましたが、ユーザーがバックスペース、Enter、タブなどを使用できるようにしたいと考えていました。ホワイトリストにすべての有効なキーコードを明示的にリストするよりも、これを行うためのより良い方法を望んでいました。私はそれがうまくいくことを望んで/\W/いましたが、残念ながら、あまりにも多くのキープレスに一致します。

これは私が現在持っているものです。

  $input.keypress(function(evt) {
    var ch = String.fromCharCode(evt.which);
    var val = evt.target.value + ch;
    var pattern = /^\d+(\.?(\d{1,2})?)$/;
    if (!pattern.test(val)) {
      evt.preventDefault();
    }
  });

ユーザーが修正を行ったり、キーボードを使用してフォームをナビゲートしたりできるスマートでクリーンな方法があれば、それを聞いてうれしいです.

上記の正規表現を改善するための提案がある場合は、それを回答に含めてください (回答がない場合はコメントに残してください)。

ありがとう!

4

1 に答える 1

1

コードでこれを行う場合、キープレス自体ではなく、入力しているフィールドの内容に対して正規表現を実行します。そうすれば、印刷されない文字について心配する必要はありません。それらがフィールドにカットアンドペーストされて、そのキープレスイベントも発生しないことを心配する必要があります。

于 2012-07-02T18:57:56.973 に答える