作者:Dflying Chen (http://dflying.cnblogs.com )
可能有些朋友還不瞭解什麼是In Place Editing(不知道怎麼翻譯),請先看一下下面的DEMO(首頁過濾掉了Flash,請進入文章觀看,下面是一張):
上面三個輸入在平時就是普通的Label,滑鼠移至上方在上面時會有邊框出現。當使用者點擊這個Label時,切換到Input狀態。使用者輸入完畢滑鼠移開,又會切換回Label狀態,提供了豐富的使用者視覺體驗,同時也節約了頁面空間。該控制項是我匆促之間(一個小時)完成,好多程式碼群組織混亂,可能也會有不少Bug,僅供各位參考並請不吝指正。
InPlaceEditingInput控制項有如下五個屬性,當然,您可以很容易的擴充:
- toolTipText:該輸入控制項的初始文字提示。上面DEMO中的“Enter Your Name”就是制定的這個屬性。
- toolTipTextColor:該輸入控制項的初始文字的顏色,預設值為#aaa。您可以看到上面DEMO中的“Enter Your Name”的顏色與使用者實際輸入的文字顏色不一樣,稍微淺了一點。
- labelColor:該控制項作為Label顯示時的顏色,預設值為white。
- inputBorderColor:該控制項作為Input顯示時的邊框顏色,預設值為black。
- inputBgColor:該控制項作為Input顯示時的背景顏色,預設值為#f2f2f9(淡藍色)。
使用InPlaceEditingInput控制項要注意以下幾點:
- ScriptManager中要添加InPlaceEditingInput.js檔案的引用。
- 作為InPlaceEditingInput控制項的源DOM元素必須為input或者textarea。
- 您應該為每個InPlaceEditingInput控制項指定toolTipText屬性,以帶來好的使用者體驗。
該控制項的主要開發思路為:
- 充分利用Atlas提供的強大的JavaScript物件導向功能,繼承於Sys.UI.TextBox類。
- 捕獲HTML的onmouseover,onmouseout,onfocus以及onblur事件,並應用相應的CSS樣式。
該控制項的原始碼以及開頭部分樣本程式可以在此下載:http://files.cnblogs.com/dflying/InPlaceEditingDemo.zip