extjs FormPanel更改为普通表单提交,提交到iframe显示
BasicForm提交源代码:
由这句话可以知道,我们的提交实际是Dom元素中的form提交的,那么应该如何设置为普通的提交,而且设置为提交到iframe中显示呢?
下面将贴出所有的源代码:
我的FormPanel的源代码:
query这个方法是提交的方法:
在query方法中的return之上的代码,仅仅只是用来测试是否能实现,普通的表单提交,以及提交到我想要的iframe中显示数据;
下面解释一下关键的几个属性的设置:
现在还只是设置了target,还没有设置为普通的提交,那么此时需要设置的属性是:standardSubmit
文档:
standardSubmit : Boolean
If set to true, standard HTML form submits are used insteadof XHR (Ajax) style form submissions. Defaults to false.
Note: When using standardSubmit
, theoptions
to
submit
are ignored becauseExt's Ajax infrastracture is bypassed. To pass extra parameters (e.g.baseParams
and
params
), utilize hidden fieldsto submit extra data, for example:
new Ext.FormPanel({
standardSubmit: true,
baseParams: {
foo: 'bar'
},
url: 'myProcess.php',
items: [{
xtype: 'textfield',
name: 'userName'
}],
buttons: [{
text: 'Save',
handler: function(){
var fp = this.ownerCt.ownerCt,
form = fp.getForm();
if (form.isValid()) {
// check if there are baseParams and if
// hiddent items have been added already
if (fp.baseParams && !fp.paramsAdded) {
// add hidden items for all baseParams
for (i in fp.baseParams) {
fp.add({
xtype: 'hidden',
name: i,
value: fp.baseParams[i]
});
}
fp.doLayout();
// set a custom flag to prevent re-adding
fp.paramsAdded = true;
}
form.submit();
}
}
}]
});
standardSubmit设置为true,HTML标准提交将代替Ajax提交,默认值false;
如果这些你全部都设置过并且你的FormPanel有url属性,那么你在提交将会是普通的form提交,也可以提交到对应的iframe中.