控制texterea長度,并顯示剩余字數,只能在IE上運行

<script>
function checklen(obj){
? var lenE = obj.value.length;
? var lenC = 0;
? var CJK = obj.value.match(/[u4E00-u9FA5uF900-uFA2D]/g);
? if (CJK != null) lenC += CJK.length;
??? tno.innerText = obj.maxlength - lenC - lenE ;
??? if (tno.innerText < 0) {
????? var tmp = 0
????? var cut = obj.value.substring(0, obj.maxlength);
????? for (var i=0; i<cut.length; i++){
????? tmp += /[u4E00-u9FA5uF900-uFA2D]/.test(cut.charAt(i)) ? 2 : 1;
????? if (tmp > obj.maxlength) break;
??? }
??? obj.value = cut.substring(0, i);
? }
}
</script>
<body onload="tno.innerText = s1.maxlength;">
<textarea name="s1" rows="5" cols="50" maxlength="100" onpropertychange="checklen(this)"></textarea>
剩余<span id="tno"></span>個字符

附:Javascript中的trim和replace函數===============
//triml();
triml = function () {
? for (var i = 0; i < this.length; i++) {
??? if (this.charcodeat (i) > 32) {
????? return this.substr (i, this.length);
??? }
? }
? return this;
}
?
//trimr();
trimr = function () {
? for (var i = this.length; i > 0; i--) {
??? if (this.charcodeat (i) > 32) {
??? return this.substring (0, i + 1);
??? }
? }
? return this;
}
?
//trimwhite();
trimwhite = function() {
? this = this.triml ();
? return this.trimr ();
}
?
//replace();
function replace():string {
? var str:string = string(arguments[0]);
? var re_str:string = string(arguments[1]);
? var new_str:string = string(arguments[2]);
? if (arguments.length<3||re_str=="") {
??? return str;
? }
? while (str.indexof(re_str) != -1 && str != "") {
??? str_b = str.indexof(re_str);
??? str_e = str_b+re_str.length-1;
??? if (str_b != 0 && str_e != str.length-1) {
????? str = str.substr(0, str_b)+new_str+str.substr(str_e+1, str.length-1);
??? } else if (str_b == 0) {
????? str = new_str+str.substr(str_e+1, str.length-1);
??? } else {
????? str = str.substr(0, str_b)+new_str;
??? }
? }
? return str;
}