詭異的事情發生了!!怎麼還是可以打超過字元...我明明寫了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)");
這樣就大功告成囉~!


0 意見:
張貼意見