私の必要性は単純です - ユーザーが正しい方法で通貨の値を入力できるようにしたいと思います。
- 整数を貼り付けると整数が生成されます。つまり、貼り付け
12345
は生成されますが、生成12345
されません123.45
- 小数の値を貼り付けても同じ値が
1234.5
得1234.5
られ123.45
ます。貼り付けはどちらかまたは1234.0
どちらかを生成する必要があります-いずれかが有効ですが、真ん中のものが最も簡単なはずです。1234
1234.0
1234.00
- 分数区切り記号
.
は明示的かつオプションである必要があります。つまり、ユーザーが入力12345
したり、ユーザーが入力したりでき123.45
ます。2 つの入力は異なる値を生成します。最初の 2 つの項目を参照してください。 - 入力は固定サイズではありません。つまり、
123
と1234
と12345
の両方12.3
が有効な入力です。 - 不正な入力の貼り付けはブロックする必要があります。できれば、問題のある文字を単純に削除します。
- 不正な入力の入力もブロックする必要があります。つまり、有効な入力のプレフィックスも有効であることが期待されます。したがって、入力/貼り付け
123.
は許可されています。 - おまけとして、開発者は、整数部分を
,
千、百万などで割って表示するように指定できるはずです...つまり、次のよう1234567.8
に表示されます1,234,567.8
そのような入力の正規表現 (コンマを省略) は(最後の文字にすることができることに/^[1-9]\d*(\.\d{0,2})?$/
注意してください) になります。.
今、私はいくつかの jQuery プラグインを試しましたが、それらは Web で最も人気があるようです。残念ながら、どちらも法案に適合しません。
http://www.meiocodigo.com/projects/meiomask/
1、2、3 を強制する方法がわからない: http://jsfiddle.net/mark69_fnd/gKuaH/
http://digitalbush.com/projects/masked-input-plugin/
1、2、3、および 4 を強制する方法がわからない。貼り付けの動作がおかしい。http://jsfiddle.net/mark69_fnd/jF86D/
http://akzhan.github.com/jquery-keyfilter/
正規表現は入力全体ではなく各文字に適用されるように見えるため、この特定のタスクにはまったく適していません: http://jsfiddle.net/mark69_fnd/uj9ZK/
私の制約はそんなに異常ですか?そうは思わない。調査したプラグインの代わりに、すべての制約を満たす代替案を提案できる人はいますか?
ありがとう。
編集
Robin Herbots による実装 - https://github.com/RobinHerbots/jquery.inputmask。非常に興味深いようです。ボーナスを除いてすべてがサポートされているようです。まだチェック中 - http://jsfiddle.net/mark69_fnd/KW4qn/
EDIT2
残念ながら、https://github.com/RobinHerbots/jquery.inputmaskには独自の問題があります。たとえば、拡張ファイルでいくつかの便利な入力マスクが定義されていますが、どのように機能するかを理解できません (ただし、私は単に愚かかもしれません)。しかし、それは私のスタイリングも台無しにしているようです. CSS で中央揃えとして宣言されている数値フィールドが右揃えになります。私が理屈を理解している限り、これは容認できません。要するに愛がない。