2011-08-18 52 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