0

私は ExtJS Formpanel を持っており、正常に動作しているフォーム (フォームのフィールドではなく) のクリックでリスナーを作成しました。

  1. Ext.FocusManager.Enable() を true に設定した後でも、「ぼかし」を機能させることができません。私は何が欠けていますか?

  2. formpanel クリック イベントのイベント ハンドラからフォーム フィールドにアクセスできません。私が行うとき - this.up.('form').get.(fielname).value [フォームフィールドのイベントハンドラーで正常に動作します。] 要素が未定義であると言います。ここでフォーム要素にアクセスするにはどうすればよいですか?

コード スニペットの追加 -

// Call it Object A     
Ext.create.('Ext.form.Panel', {

       id : xyz,


       items: [
       {
          xtype : 'textfield',
          name : 'test',
          fieldLabel : 'Name'
    }

    listeners : { // listener on the formPanel; not on any of its element
      click : {
            console.log("this works" );
     },
     focus : {
            console.log('this does not work');
    }

    }
    ]


    }

B.fieldなどの別のオブジェクトの値にアクセスできるようにするために、これを行っています。

Onload B.field の値を取得できました。しかし、ユーザーが別のタブにある B.field の値を変更すると、A の B.field の変更された値を取得できません。可能であれば、データベースへの Ajax 呼び出しを回避する方法を探しています。 .

お時間をいただきありがとうございます。

4

1 に答える 1

0

参照するコードのサンプルがなければ、何をしようとしているのかを判断するのは困難です。

フォーム要素のクエリ方法を修正する必要があるだけかもしれません。たとえば、ツールバーの要素はフォームの子ではないため、上下は機能しません。

focusイベント、blur、またはclickフォームをリッスンできないと思います。できたとしても、あなたがやりたいと思うかどうかはわかりません。focus代わりに、フィールドまたはclickボタンでリッスンする方が一般的です。

例 1 フィールドを使用したフォームfocusとボタンを使用したフォームclick

http://codepen.io/anon/pen/qEPRge?editors=001

;(function(Ext) {
  Ext.onReady(function() {
    console.log("Ext.onReady")

    var form = new Ext.create("Ext.form.Panel", {
      title: "person"
      ,items: [
        {itemId: "fld-id", fieldLabel: "id", name: "id", value: "1", xtype: "textfield", labelAlign: "top", labelSeparator: ""}
        ,{itemId: "fld-name", fieldLabel: "name", name: "name", value: "Emily", xtype: "textfield", labelAlign: "top", labelSeparator: ""}
        ,{itemId: "btn-submit", text: "submit", xtype: "button"}
      ]
    })
    form.on("afterrender", function(component) {
      console.log("form.afterrender")
    })
    form.render(Ext.getBody())

    form.queryById("fld-id").on("focus", function(component) {
      console.log("fld-id.focus")
    })

    form.queryById("fld-name").on("focus", function(component) {
      console.log("fld-name.focus")
    })

    form.queryById("btn-submit").on("click", function(component) {
      console.log("btn-submit.click")
      console.log("fld-id.value:")
      console.log(component.up("form").queryById("fld-id").getValue())
      console.log("fld-name.value:")
      console.log(component.up("form").queryById("fld-name").getValue())
    })
  })
})(Ext)
于 2015-02-02T17:38:50.890 に答える