詭異的事情發生了!!怎麼還是可以打超過字元...我明明寫了MaxLength="10"
不死心的在瀏覽模式下檢視原始碼...
竟然發現TextBox轉譯成TextArea格式,而且MaxLength這個屬性不見了!!
TextBox轉成了input,而且
MaxLength有出現!!!
後來上網查了資料才知道已經有許多先進遇到這種詭譎的問題了!
後來推測是因為.net在轉換Html時,如果是多行模式會轉成TextArea這個標籤
而TextArea本身沒有提供MaxLength屬性,
解決的方法有二:
1.一位保哥的Blog,提供修改過的TextBox物件,可以在MultiLine模式下提供字元限字的方法
2.使用JavaScript來做Client的控管,個人比較偏好這個,簡單明瞭。
function ismaxlength(obj){ var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""; if (obj.getAttribute && obj.value.length>mlength) obj.value=obj.value.substring(0,mlength); }
後端程式要加上下面兩行
TextBox1.Attributes.Add("maxlength", "200"); //給TextArea maxlength屬性,目前測試是沒辦法直接在TextBox上加 //.net不會把maxlength屬性加上到TextArea標籤上 TextBox1.Attributes.Add("onkeyup", "return ismaxlength(this)");
這樣就大功告成囉~!
Hi~今天專案正好在找相關的資料發現到你這裡
回覆刪除2.的方法的確很簡單明瞭,可是我測試到如果user很機車用滑鼠做複製貼上的動作的話,js似乎是不會檢查到
1.的方法保哥提到的Annsa,該網站已有提供sample code下載,是.net 2.0編譯的,我是在.net 4.0的專案直接參考加入他的AnnsaControls.dll,只要在.apsx註冊一下<%@ Register Assembly="AnnsaControls" Namespace="Annsa.Controls" TagPrefix="annsaControls" %>
內容就可以直接使用
Improved Multiline Text Box (MaxLength set to 20)
效果蠻不錯的~
總之 謝謝您提供的資訊
sorry 好像有些字秀不出來 詳情看他sample code的SampleWeb的Default.aspx也一樣
刪除