2014-04-07 56 views
2

可用: Ext.form.PanelEXTJS驗證面板中窗口

this.myForm = Ext.create("Ext.form.Panel", { 
      items : [{ 
       xtype : 'textfield', 
       name : 'val1', 
       fieldLabel : 'val1', 
          allowBlank: false, 
       validator : function(value) { // validate val1 
        if (!(/^[a-zA-Z]+[\w]*$/.test(value))) 
         return "val1 is not valid"; 
        return true; 
       } 
      }, { 
       xtype : 'textfield', 
       name : 'code', 
       fieldLabel : 'val2', 
       allowBlank: false, 
       validator : function(value) { // validate val2 
        if (!(/^[a-zA-Z]+[\w]*$/.test(value))) 
         return "val2 is not valid"; 
        return true; 
       } 
      }] 
     }); 

然後將其發送到窗口:

Ext.window.Window

this.someWindow = Ext.create("Ext.window.Window", { 
      items : [me.myForm, me.anotherPanel], 
      title : 'test', 
      closeAction : 'hide', 
      buttons : [{ 
       text : 'Save', 
       handler : function() { // some actions 
           } 

如何驗證val1和val2 myFormsomeWindow on action:save?

回答

1

這將調用驗證功能

handler: function(button) { 
    var valid = button.up('window').down('form').getForm().isValid(); 
    if(valid) { 
     ... 
    } 
} 

編輯:

或者您將保存按鈕到表單buttons配置和選項formBind: true添加到按鈕。只要表單無效,這將禁用該按鈕。

+0

是的,最佳答案,謝謝! – user2352679

0

這些validator函數將驗證值作爲用戶類型,所以這些對於客戶端驗證是足夠的。但是,您還需要對這些值進行服務器端驗證,因爲JavaScript可以輕鬆地由知道用戶知道自己在做什麼的用戶修改客戶端。