PDA

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}")})
と書いた所何も入力できなくなってしまいました。
正規表現の書き方が間違えてるのでしょうか・・・