2013-08-22 131 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; 
... 
}