我需要提交一个form
,其中包含一些可能为invalid
的字段。例如,某些字段的属性allowBlank
设置为false
。我在提交之前尝试这样做:
myform.getForm().getFields().each(function(field){
if(field.allowBlank==false) field.allowBlank=true; // <- has no effect
});
myform.getForm().submit({ .... // <- still not submitted
但它没有效果,即使myform.getForm().isValid()
返回true
,表单也未提交。
修改
为防止投票失败,我想澄清一下。我知道,这是正常行为,但我需要一些特殊功能的解决方法。我提交表单不是要将值插入数据库,而是检查表单字段中的当前值。在某些情况下,根据值,我想隐藏一些字段。当我有一个parent object
与child objects
分享其父级字段时,这是必要的。但是这些子对象可能彼此不同。因此,当字段object type
的值为child one
时,我想隐藏与child two
相关的某些字段。但要检查这一点,我需要提交表单,这就是问题出现的地方。
答案 0 :(得分:2)
你可以利用Ext中的Vtypes,我认为这将解决你的问题。
Ext.apply(Ext.form.field.VTypes, {
firstName: function(val, field) {
// Use a condition if you need to, otherwise just return true value
if (val == '123') {
return true;
}
return false;
}
});
Ext.create('Ext.form.Panel', {
title: 'Sample Form'
,width: 300
,bodyPadding: 10
,renderTo: Ext.getBody()
,items: [{
xtype: 'textfield'
,name: 'first name'
,fieldLabel: 'First Name'
,vtype: 'firstName' // <-- vtype here
,allowBlank: false
}]
});
即使您有allowBlank: false
并且您决定在true
方法中返回vtype
值,您仍然会有一个有效字段,可以让您提交表单。