2016-11-22 5 views
0

正、負、整数、小数点以下2桁までの数字のみを受け入れるようにExtJsのテキストフィールドを設定する必要があります(正、負、整数、10進数を受け入れる必要があります)。私はmaskeReと正規表現/^-?[0-9]\d*(\.\d+)?$/で試しました。しかし、それは正の整数だけを受け入れます。制限された文字を入力することはできません。また、最初の場所と '。'でのみ ' - 'を受け入れる必要があります。間に1度だけ。どのようにExtJs TextfieldがmaskReを使用して数値だけを受け入れるように制限するか。

だから、受け入れる必要があります: 10、 -10、 10.12、 -10.34など

Link to my fiddle

おかげ

答えて

1

あなたmaskRe

maskRe: /[0-9.-]/, 
validator: function(v) { 
    return /^-?[0-9]*(\.[0-9]{1,2})?$/.test(v)? true : 'Only positive/negative float (x.yy)/int formats allowed!'; 
}, 

にポイントを変更しますあなたがいくつかの文字を許可するということです(値自体ではなく)maskReを使用して、validator内の文字列入力を検証します。

パターンは詳細:

  • ^ - 文字列
  • の開始
  • -? - オプションのハイフンを
  • [0-9]* - ゼロ以上の数字
  • (\.[0-9]{1,2})? -
      のオプションのシーケンス
    • \. - ドット
    • [0-9]{1,2} - 任意の1又は2桁
  • $ - 文字列の末尾。
+0

ありがとう@ウィクスター、これは動作します。しかし、私の要件は、エラーメッセージを表示するのではなく、制限された文字を入力することができないようにすることです。 – Harshal

+0

また、最初の場所でのみ ' - 'を受け入れる必要があります。間に1度だけ。 私の質問を編集しました。不完全な要求を申し訳ありません。 – Harshal

0

このプロパティはxtype: 'numberfield'というプロパティを使用できます。すべてのタイプの番号を受け入れます。 10進値の場合、decimalPrecision:2を使用できます。

お試しください。コードが機能しない場合は、コードを入力してください。私はあなたに最高のソリューションを提案することができます。

すべてのベスト:

関連する問題