2013-08-22 88 views
1

我有一个带有动态项目的表单面板。有些项目已经隐象例如:Extjs4.1 - 提交隐藏字段中的有效表单有allowblank false

 items: [{ 
      xtype: 'textfield', 
      fieldLabel: 'Field 1', 
      name: 'theField' 
     },{ 
      xtype: 'textfield', 
      fieldLabel: 'Field 2', 
      name: 'theField' 
     },{ 
      xtype: 'textfield', 
      fieldLabel: 'Field 3', 
      name: 'theField', 
      hidden: true, 
      allowBlank : false 
     }] 

但是,当我提交表单像

  if (form.isValid()) { 
       alert('submit'); 
      }else alert('fail'); 

,将检查所有的领域,我的状态不会提交。
反正有效的形式(只显示字段)?如何做到这一点感谢

这里是我的榜样检查http://jsfiddle.net/jZYcQ/

回答

5

正如你所说的,隐藏字段仍将进行验证。相反,你应该禁用该字段,这意味着它不会被提交,但也不会包含在验证中。

+0

确实,我设置隐藏和禁用,它的作品就像一个魅力!多谢兄弟! :-) – Lawrence

+0

@freestyle请将答案标记为已接受 – Steen

0

隐藏域被验证。要禁用或跳过对隐藏字段的验证,您可以将'skipValidation'设置为true。另外,如果设置为'allowBlank'为true。

所以,通常当一个字段被定义并且你已经添加了验证时,将skipValidation设置为true将会禁止表单提交该字段的验证。但是,它不会禁用allowBlank验证。提交时仍然无法将您的字段设置为空。因此,如果您的字段除了需要字段之外还有其他验证,您将需要两者。重置他们时,字段显示..

//View 
xtype:'textfield', 
allowBlank:false, 
validator: function(){ 
    //custom validation 
} 
... 

//Controller 
function(){ 
... 
    form.down("#field").skipValidation = true; 
    form.down("field").allowBlank = true; 
... 
}