2011-08-18 62 views
0

我想添加一個偵聽器到Ext.form.Formpanel子元素Ext.form.BasicForm提交事件,然後通過它的.reset()方法重置窗體。在http://dev.sencha.com/deploy/touch/docs/?class=Ext.form.FormPanel商務部就明確指出:Sencha Touch FormPanel提交監聽器不工作

submit : (Ext.FormPanel this, Object result) 
Fires upon successful (Ajax-based) form submission 

但不知它會不會真的爲我工作。 這是我的代碼:

var messInput = new Ext.form.FormPanel 
({ 
    fullscreen : true, 
    url : '/mess/', 
    standardSubmit : false, 
    listeners : { 
     el: { 
      submit: function(form, result) { 
       form.reset(); 
      } 
     } 
      }, 
    items: [ 
      new Ext.form.Text ({ 
       name : 'mess', 
       placeHolder: 'Text and #Tags', 
       listeners : { 
       keyup :function(field, event) { 
        var keyCode = event.browserEvent.keyCode; 
        if(keyCode == 51) { 
         console.log(event.browserEvent.keyCode); 
        } 

       } 
      } 
     })] 
}); 

,如果我這樣嘗試它,我得到一個

Uncaught TypeError: Object [object Object] has no method 'reset'

有人可以解釋的問題是excatly的是什麼?我是否需要調用父級Formpanel,因爲我將偵聽器添加到底層el?

回答

0

您正在收聽dom元素的基本js事件「提交」。你不能輕易地將sencha物體拿到裏面。這就是Ext.form.FormPanel具有beforeSubmit事件的原因。數據已被收集,因此您可以將表單和過程重置爲ajax提交併返回true;

編輯:這是正確的做法,有關最後的答案抱歉。

+0

謝謝。但是這在文檔中說明了什麼? 如果我這樣做,它會重置表單字段,但也做一個空的發佈請求。表單提交後不應該發生此事件嗎? – faebser