Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sencha Touch FormPanel提交侦听器不工作_Javascript_Sencha Touch - Fatal编程技术网

Javascript Sencha Touch FormPanel提交侦听器不工作

Javascript Sencha Touch FormPanel提交侦听器不工作,javascript,sencha-touch,Javascript,Sencha Touch,我正在尝试为submit事件向Ext.form.Formpanel子元素Ext.form.BasicForm添加侦听器,然后通过其.reset方法重置表单。该文件中明确指出: submit : ( Ext.FormPanel this, Object result ) Fires upon successful (Ajax-based) form submission 但不知怎的,这对我来说并不管用。 这是我的代码: var messInput = new Ext.form.Form

我正在尝试为submit事件向Ext.form.Formpanel子元素Ext.form.BasicForm添加侦听器,然后通过其.reset方法重置表单。该文件中明确指出:

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?

您正在侦听dom元素的基本js事件提交。你很难在里面找到sencha对象。这就是Ext.form.FormPanel在提交事件之前的原因。已经收集了数据,因此您可以将表单和流程重置为ajaxsubmit,并返回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);
                    }

                }
            }
        })]
});

编辑:这是正确的方式,很抱歉最后的答案。

谢谢。但文件中在哪里说明了这一点?如果我按您的方式执行,它将重置表单字段,但也会执行一个空的post请求。表单提交后是否应该触发此事件?