Sencha Touch FormPanel提交监听器无法正常工作

时间:2011-08-18 02:40:59

标签: javascript sencha-touch

我正在尝试为提交事件的Ext.form.Formpanel子元素Ext.form.BasicForm添加一个侦听器,然后通过其.reset()方法重置表单。在http://dev.sencha.com/deploy/touch/docs/?class=Ext.form.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);
                    }

                }
            }
        })]
});

如果我这样尝试,我会得到一个

  

未捕获TypeError:对象[object Object]没有方法'reset'

有人可以解释一下这个问题是什么吗?我是否需要调用父Formpanel,因为我将监听器添加到底层el?

1 个答案:

答案 0 :(得分:0)

您正在收听dom-element的基本js-event“submit”。你不能(容易)获得它内部的sencha对象。这就是Ext.form.FormPanel具有beforeSubmit-event的原因。数据已经收集,因此您可以将表单和流程重置为ajax submit并返回true;

form = new Ext.form.FormPanel({
    fullscreen : true,
    url : '/mess/',
    listeners: {
        beforesubmit: function(e, a) {
           this.reset();
           return true;
        }
    },

    standardSubmit : false,
    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);
                    }

                }
            }
        })]
});

编辑:这是正确的方法,对最后的答案感到抱歉。