寫程式的時候, 習慣會把一些需要格式化的欄位透過其他 control 來讓 user 挑選,
但... ui 做的再好, 總是會有白目的 user,
為了避免少數 user 亂key in, 只好透過這樣的方式來避免.
例如:
有一個日期欄位, 旁邊我會放個小日曆的圖示,
user 只要用滑鼠點一下小日曆,
就可以透過 ajax 的 CalendarExtender 元件把日期輸入到 textbox,
即使做到如此, 仍然會有 user 堅持要手動 key in,
而手動 key in 的結果不是資料錯誤, 就是格式不正確,
但是 user 不認為是他們操作錯誤, 而會覺得是程式沒寫好.
上述的例子, 其實常常發生,
因此我想到的作法, 就是乾脆把 textbox 的 enable 屬性改成 false,
強迫 user 透過小日曆去挑選, 並用 javascript 檢核,
如果該欄位沒有挑選, user 就無法結束該項作業.
昨天在修改程式的時候, 突然發現這樣處理竟然會抓不到日期欄位的值,
上網 google 了一下發現找到一篇文: http://www.sunnychen.org/article.asp?id=62
作者與我有類似的情形, 只不過他的作法是開啟 textbox 的 readonly,
而我則是把 textbox 的 enable 設為 false,
但我們的用意是相同的, 就是要讓 user 無法直接修改 textbox 的值.
參考這位作者的作法, 不在一開始就設定 textbox 的 readonly 屬性,
而是改在程式裡面, 動態加入其 readonly 屬性, 即可達成我要的效果.
但是...我的好奇心又發作了,
那我可不可以動態的加入 disabled 的屬性, 來達到我要的效果呢?
測試了一下, 發現還是不行, 只好暫時乖乖的使用 readonly 了.