私は数値のみを作成する方法を探しています (または、その場で複数のタイプのバリデーターで動作するもの)。これまでのところ、次のようなものがあります。
this.ContentEditable.bind("keydown", this, function (event) {
if ((event.data.NumericOnly === true) && (event.which != 8) && (event.which != 189) && (event.which != 190)) {
var c = String.fromCharCode(event.which);
if ('0123456789'.indexOf(c) < 0) { return (false); }
}
});
このメソッドの注意点は、ユーザーが既に「.」を入力している場合です。(文字 190、それではString.fromCharCode
動作しません。文字 8 はバックスペースです) または "-" (文字 189) が重複しているか、および/またはcontenteditable=true
のテキストの最初の文字以外の場所にあり、無効と見なされます。テキストを取得し、return (false); で入力をキャンセルできました。すでに「.」が含まれている場合。と「。」が入力されているか、カーソルが「-」の位置ゼロにあるかどうかを確認しますが、contenteditable=true
テキストにはまだ存在していませんが、もっと拡張可能なものが欲しいです。
キーイベントの最終結果を取得して、キーイベントをキャンセルするオプションがある間にバリデーターに送信することはできますか?