Javascript Sencha Touch FormPanel提交侦听器不工作
我正在尝试为submit事件向Ext.form.Formpanel子元素Ext.form.BasicForm添加侦听器,然后通过其.reset方法重置表单。该文件中明确指出: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.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请求。表单提交后是否应该触发此事件?