View Full Version : ext.form.textfieldの入力制限
ak_ext
14 May 2009, 1:55 AM
textfieldに0~9の数字しか入力できないようにする事は可能でしょうか。
チェックをするのではなく、そもそも数字しか入らないようにしたいです。
Kazuhiro Kotsutsumi
14 May 2009, 4:49 AM
できます。
TextFieldのkeydown/keyup等にイベントハンドラを設定してください。
ただし、TextFieldに直接やってもイベントはおきません。
なので、keydown/keyupのイベントをハンドリングしたい場合は、renderイベントハンドラを記述して、その引数で渡ってくる第一引数オブジェクトをgetEl()して、<input type="text" />自体のDOMイベントをハンドリングする必要があります。
DOMに対して、maxlengthを設定する場合も同様です。
TextFieldのコンフィグオプションを載せておきます。
// {{{ render
'render': {
// ハンドラ設定
fn: function( c ) {
// MAX Length設定
c.el.dom.maxLength = 25;
c.getEl().on(
// イベント名設定
'keyup',
// ハンドラ設定
function() {
// ここに数値チェック
},
// スコープ設定
this
);
c.getEl().on(
// イベント名設定
'keydown',
// ハンドラ設定
function() {
// ここに数値チェック
},
// スコープ設定
this
);
},
// スコープ設定
scope: this
}
// }}}
integra
14 May 2009, 4:04 PM
textfieldに0~9の数字しか入力できないようにする事は可能でしょうか。
チェックをするのではなく、そもそも数字しか入らないようにしたいです。
バリデーションなしであればmaskReのプロパティを使えばOKですよ。
maskRe: new RegExp("[0-9]")
こんな感じで。
>Kazuhiro Kotsutsumiさん (http://extjs.com/forum/member.php?u=12533)
それはinput type textのときのやり方ですか?
ak_ext
24 May 2009, 10:26 PM
ちなみに整数7桁まで可能、
小数4桁まで可能の入力チェックを
NumberFieldでやろうと
new fm.NumberField({allowDecimals: true,allowNegative: false , maskRe: new RegExp("PE[0-9]{7}\.[0-9]{4}")})
と書いた所何も入力できなくなってしまいました。
正規表現の書き方が間違えてるのでしょうか・・・
Powered by vBulletin® Version 4.1.5 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.