2008年12月29日
第 4 章 祝福吧!把表單和輸入控件都改成ext的樣式
4.1. 不用ext的form啊,不怕錯過有趣的東西嗎?
初看那些輸入控件,其實就是修改了css樣式表而已。你打開firebug看看dom,確實也是如此,從這點看來,似乎沒有刻意去使用ext的必要,誠然,如果單單要一個輸入框,不管添入什麼數據,就點擊發送到後台,的確是不需要ext呢。
你不想用一些預設的數據校驗嗎?你不想在數據校驗失敗的時候,有一些突出的提示效果嗎?你不想要超炫的下拉清單combox嗎?你不想要一些你做夢才能朦朧看到的選擇控件嗎?唉,要是你也像我一樣禁不起誘惑,勸你還是隨著慾望的節拍,試一下ext的form和輸入控件。
4.2. 慢慢來,先建一個form再說
var form = new Ext.form.Form({
labelAlign: 'right',
labelWidth: 50
});
form.add(new Ext.form.TextField({
fieldLabel: '文本框'
}));
form.addButton("按鈕");
form.render("form");
簡單來說,就是構造了一個form,然後在裡邊放一個TextField,再放一個按鈕,最後執行渲染命令,在id="form"的地方畫出form和裡邊包含的所有輸入框和按鈕來。刷拉一下就都出來了。
不過即使這樣,圓角邊框可不是form自帶的,稍稍做一下處理,參見html裡的寫法。
<h3 style="margin-bottom:5px;">form</h3>
開頭結尾那些div就是建立圓角的,有了這些我們都可以在任何地方使用這種圓角形式了,不限於form喲。
html例子,1.x在lingo-sample/1.1.1/04-01.html
2.0裡的FormPanel跟1.x裡已經基本完全不一樣了,咱們先看個簡單例子︰
代碼如下︰
var form = new Ext.form.FormPanel({
defaultType: 'textfield',
labelAlign: 'right',
title: 'form',
labelWidth: 50,
frame: true,
width: 220,
items: [{
fieldLabel: '文本框'
}],
buttons: [{
text: '按鈕'
}]
});
form.render("form");
html裡不需要那麼多東西了,只需要定義一個div id="form"就可以實現這一切。明顯可以感覺到初始配置更緊湊,利用items和buttons指定包含的控件和按鈕。
現下先感覺一下,我們後面再仔細研究,例子見lingo-sample/2.0/04-01.html。
4.3. 胡亂掃一下輸入控件
兄弟們應該都有html開發的經驗了,像什麼input用的不在少數了,所以咱們在這裡也不必浪費唾沫,大概掃兩眼也知道ext的輸入控件是做什麼的。
1.
像TextField,TextArea,NumberField這類當然是可以隨便輸入的了。
2.
ComboBox,DateField繼承自TriggerField。他們長相差不多,都是一個輸入框右邊帶一個圖片,點擊以後就跳出一大堆東西來讓你選擇,輸入框裡頭顯示的是你選中的東西。
3.
Checkbox和Radio,ext沒有過多封裝,基本上還是原來的模式。
4.
Button,這個東東其實就是一個好看的div,跟comboBox一樣,不是對原有組件的美化,而是重新做的輪子。你可以選擇用以前那種難看的 type="button",還是用咱們漂亮的div,看你的愛好了。type="submit"和type="reset"也一樣沒有對應的組件,都使用Button好了。
5.
檔案上傳框,type="file",因為瀏覽器的安全策略,想上傳檔案,必須使用type="file",而且我們不能使用js修改上傳框的值,所以非常郁悶,目前的模式是把它隱藏起來,然後在點擊咱們漂亮的Button時,觸發上傳框的點擊事件,從而達到上傳的目的。在這方面extjs.com論壇上有不少實現上傳的擴展控件,咱們可以參考一下。
4.4. 起點高撒,從comboBox往上蹦。
我覺得像TextField啊,TextArea啊,都是在原來的東西上隨便加了幾筆css弄出來的,大家都會用,所以沒什麼大搞頭,最後綜合起來一說就 ok了。而這個comboBox跟原有的select一點兒關係都沒有,完全是用div重寫畫的。所以,嘿嘿~
耳聽為虛,眼見為實,先看看所謂的comboBox究竟是個什麼模樣。
漂亮不?漂亮不?怎么看都比原生select強喲。啦啦啦,咱們看看代碼撒。不過呢,comboBox支援兩種構造模式,一一看來。
4.4.1. 憑空變出個comboBox來。
4.4.2. 把select變成comboBox。
4.4.3. 破例研究下comboBox的內在本質喲
4.4.4. 嘿嘿~本地的做完了,試試遠程滴。
4.4.5. 給咱們的comboBox安上零配件
4.4.6. 每次你選擇什麼,我都知道
4.4.7. 露一小手,組合上面所知,省市縣三級級聯。哈哈~
這是一個相當典型的案例,以前經常用select做,現下用comboBox實現的效果又會如何呢?
4.4.7.1. 先做一個類比的,所有數據都在本地
4.4.7.2. 再做一個有後台的,需要放在伺服器上咯
4.5. 還要做,字段驗証呀,表單提交啊,表單佈局咯,檔案上傳喲
關鍵字
EXT