5

ExtJS 3を使用しており、以下に示す例のように、チェックボックスを選択/選択解除するときに特定のテキストフィールドを有効/無効にする必要があります。

{ 
    fieldLabel: 'myCheckBox'
    xtype: 'checkbox',
    name: 'myCheckBox'
},{
    fieldLabel: 'myTextField'
    xtype: 'textfield',
    name: 'myTextField',
    disabled: true
}

私はそれを理解しているので、次のように「myCheckBox」でリスナーを使用する必要があります。

listeners: {
   change: function() {

   }
}

myTextFieldしかし、関数に渡すパラメーターと、それをターゲットにする方法がわかりません.enable() .disable() 。手伝ってくれませんか?どうもありがとうございます。


回答に基づく解決策(ありがとう):

listeners: {
     change: function(cb, checked) {
         Ext.getCmp('myTextField').setDisabled(!checked);
 }
 }

次のように、テキストフィールドコンポーネントにidタグを追加しました。

id: 'myTextField'
4

3 に答える 3

5

Ext.getCmp()がコンポーネントを提供するよりも、パラメーターとして何を渡すかわからない場合。コンポーネントのIDをパラメータとして受け取ります。あなたの場合、テキストフィールドにIDを割り当てる必要があり、変更イベントでExt.getCmp('myTextField')として取得できます。myTextFieldはtextfieldのIDです。コンポーネントの名前とIDは同じにすることができます。

listeners: {
 change: function() {
     Ext.getCmp('myTextField').disable();
     //or
     Ext.getCmp('myTextField').enable();
 }
}
于 2013-03-01T15:27:49.543 に答える
2

を参照する方法はいくつかありますmyTextField最も簡単なのは、おそらくフィールドに参照を与えることです(このアプローチは、コンポーネントクエリを使用したほうがよいExtJS 4では機能しないことに注意してください)。

{
    fieldLabel: 'myTextField'
    xtype: 'textfield',
    name: 'myTextField',
    ref: '../myTextField'
    disabled: true
}

refを設定すると、テキストフィールドコンポーネントがその所有者またはその祖先の1つのプロパティで参照されます。したがって、リスナーは単純に次のようになります(この関数に渡されるパラメーターはドキュメントにリストされています)。

change: function(cb, checked) {
    me.myTextField.setDisabled(!checked);
}

refコンポーネントの階層によっては、パスを微調整する必要がある場合があります。

于 2013-03-01T14:57:56.700 に答える
1

例:

  1. setDisabled APIの使用:theStudentForm.findField('stud_name')。setDisabled(true);

  2. setOpacity APIの使用:theStudentForm.findField('stud_name')。labelEl.setOpacity(1);

  3. readOnly APIの使用:theStudentForm.findField('stud_name')。setReadOnly(true);

于 2014-10-09T09:51:21.747 に答える