0

最大11桁、オプションのコンマ、およびその後の2桁のみを許可するテキストボックスがあります。キーがテキストボックスに押されたときに、他のものはレンダリングされません。

$('#txt').keypress(function (e) {
  var code = e.which;
  var key = String.fromCharCode(code);
  // REGEX TO AVOID CHARS & A DOT (.)
  var pattern = /[a-zA-Z]|\./g;
  var isMatch = pattern.test(key);
  if (isMatch) {
    // DO NOT RENDER CHARS & dot
    e.preventDefault();
  }
});

上記のコードは、文字やドットなどの無効なキーが押された場合に機能しますが、1つのコンマとその後の2桁のみを保証するものではありません。

これは一致する必要があります:

12314
123123,44

これはしてはいけません:

12313,6666

これがデモです。

更新:数字とコンマ以外の数字は避ける必要があります。そのため、私が提案した正規表現は、ドット(。)のみを防ぐため無効です。

4

2 に答える 2

3

現在の文字だけでなく、完全な文字列をテストする必要があります。

$('#txt').keypress(function (e) {
    var key = String.fromCharCode(e.which);
    var pattern=/^[0-9]{1,11}(,[0-9]{0,2})?$/;

    // test this
    var txt = $(this).val() + key;

    if (!pattern.test(txt)) {
        e.preventDefault();
    }
});

</ p>

jsfiddleの例

于 2012-11-21T11:36:57.063 に答える
2

これregexは、オプションで1桁から11桁までの文字列と、それに続く,正確に2桁の文字列に一致します。^[0-9]{1,11}(,[0-9]{2})?$

説明:

^             # Match the start of the string
[0-9]{1,11}   # Followed by a maximum of 11 digits
(,[0-9]{2})?  # Optionally followed by a comma and 2 more digits 
$             # Followed by the end of the string

ここで実際の動作を確認してください。

于 2012-11-21T10:54:55.720 に答える