2015-02-02 2 views
0

У меня есть ExtJS Formpanel, и я написал прослушиватель на клик для формы (а не на любые поля формы), которая работает нормально.Blur/Click on Formpanel ExtJS 4 не имеет доступа к полям формы правильно

  1. Даже после установки Ext.FocusManager.Enable() истинно, я не в состоянии получить даже «размытость» работает. Что мне не хватает?

  2. Я не могу получить доступ к полям формы из обработчиков событий для события формы формы. Когда я делаю - 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, которое находится на другой вкладке, я не могу получить измененное значение B.field в A. Я просто нахожу способы избежать вызова Ajax в базу данных, если это возможно ,

Заранее благодарим за ваше время.

+0

Пожалуйста, вставьте фрагмент кода – Sreek521

ответ

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) 
+0

Я сделал некоторые изменения на мой вопрос. Надеюсь, что теперь он станет более ясным? – maddie