在這里我們一塊看一下form中幾個控件,因為form控件較多這里只簡單看幾個比較有代表性的。
TextField
這個是最基本的form控件了,我們看一段代碼:
當然,對于TextField前面已經說過,這里主要看一下驗證。allowBlank表示是否可以為空,否則它將會顯示blankText中的信息,但是請注意,這個信息的顯示是以提示信息的形式顯示的,必須加上 Ext.QuickTips.init(); 否則你是看不到錯誤信息的,而且我們通過 Ext.form.Field.prototype.msgTarget = 'side';可以在驗證未通過時在右側警告 。而emptyText很明顯就是為空時顯示的內容,在后面我們還定義了輸入信息的最長和最短的長度限制以及對應的提示信息。
效果如圖:
上面是為空的驗證,其實對于常用的驗證Ext中也已經定義了,那就是vtype,假設我們要驗證一個郵箱就可以在TextField中定義vtype屬性為"email"定義驗證失敗的信息vtypeText為"郵箱格式不正確!"就可以了。
常用的vtype還有"alpha"(數字)、"alphanum"(數字和字母)、"url"。但是這樣的驗證顯然還是不夠,我們知道正則表達式做驗證是最常見的一種手法,Ext當然也支持:
上面定義了一個很簡單的正則表達是驗證,顯示了正則表達式在Ext中的用法。但是其實我們知道即使是這樣有時還是不能夠滿足我們的要求的,這就必須應用Ext中的自定義驗證。自定義驗證也很簡單,只需要先使用apply方法添加自定義函數然后在控件中像Ext中已有驗證一樣配置就可以了。假設現在我要選擇一個日期段,肯定結束日期不能夠小于開始日期,這樣的驗證我們怎么做呢?
我們首先添加了一個自定義函數(用Ext的apply方法)DateRange,在這個函數中我們有val、field兩個參數,其中val就是要使用這個自定義函數的的控件的value值,field就是這個空間的屬性集合。我們約定在使用這個函數的控件中定義一個cmpDate屬性用來指定要比較的日期控件,然后在函數中我們得到這個空間的值(其實也就是其實日期的值),然后和val比較,如果val小于要比較的控件的值則返回false,否則為true。使用的時候就按照預定首先定義cmpDate,然后定義vtype為我們的自定義函數就可以了(和Ext中定義的常用vtype類型無二)。下面是我選擇了08/01/2010后鼠標指針離開后的狀態:
順便說一下,上面僅僅定義了自控件,用的時候是在FormPanel中items中添加對象名稱,由于后面的例子都是用這個fp對象作為容器,所以將代碼貼出來:
Radio
Radio控件之前也用過,它和TextField控件還有些不同之處,我們一塊看一下。我們之前定義過這樣的代碼,最為子控件放到fp中:
效果就是這樣:
先不管它是否好看,上面定義的不是value屬性而是inputValue,這個一定要說明,否則你得到的就不是你想要的value值(當然,CheckBox也是如此)。然后要說明的是它沒有沒有指定fieldLabel,如果我們指定了fieldLabel之后你會看到這樣的效果:
顯然這不是我們想要的,你肯定希望只有一個"性別"就可以了,而且兩個radio在同一行中,這才是我們通常看到的。那么我們該如何來做呢?這個我們暫時先不管,后面我們會專門探討Ext布局。另外對于CheckBox和Radio是類似的,我們也不再說了。
FieldSet
這是一個容器組件,很簡單,我們直接看代碼(這里用上面定義的tfUserName和tfUserPwd作為其子控件):
運行效果:
ComboBox
這個控件功能十分強大,很多動態復雜的功能它都有,我們這里暫且不探討他的交互性,后面會有專門的內容去說,這里只看一些基本用法。
運行效果:
那么我們如何取得ComboBox的值呢?其實比較簡單,在上面的cbName加上listeners配置:
上面我用三種方法取得ComboBox的值。
好,暫且到這里了!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
