我正在尝试为提交事件的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?
答案 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);
}
}
}
})]
});
编辑:这是正确的方法,对最后的答案感到抱歉。