我有以下代码,它在IE中适用于textarea元素。
(编辑:为了可读性而包装)
<textarea name="mem_message" cols="25" rows="5"
onkeypress="return taLimit(this)"
onkeyup="return taCount(this,'myCounter')">
<? echo $_SESSION['mem_message']; ?>
</textarea>
它调用验证函数:
<script language="Javascript"><!--Counter for Message Box -->
maxL=100;
var bName = navigator.appName;
function taLimit(taObj) {
if (taObj.value.length==maxL) return false;
return true;
}
function taCount(taObj,Cnt) {
objCnt=createObject(Cnt);
objVal=taObj.value;
if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
if (objCnt) {
if(bName == "Netscape"){
objCnt.textContent=maxL-objVal.length;}
else{objCnt.innerText=maxL-objVal.length;}
}
return true;
}
function createObject(objId) {
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>
以上所有内容仅适用于IE。在Firefox上,它甚至不会专注于这个盒子。
答案 0 :(得分:10)
几个指针:
eval
进行财产访问,这很慢且没必要。maxL = 100
),这很容易出错。答案 1 :(得分:1)
这是一个更好的脚本来计算textarea中的字符:http://sliceofcake.wordpress.com/2007/08/16/count-characters-in-a-textarea/
希望这就是你要找的东西!
答案 2 :(得分:0)
事件处理程序的属性应全部小写;你试过onkeyup而不是onKeyUp等吗?
答案 3 :(得分:0)
在使用JavaScript进行任何开发之前,请先在此处阅读Unobtrusive JavaScript http://en.wikipedia.org/wiki/Unobtrusive_JavaScript。
你以后会多次感谢我!