日期:2014-05-16  浏览次数:20349 次

高难问题,至今没有找到答案.
页面上有一个textarea(注意是多行的),现在需要用Js实现下面的功能.

1.只能输入一定字节的字符,比如允许的最大长度是10,那么只能输入10个字母或者5个   汉字(双字节的字符).
2.而且允许用户用退格键,delete键以及其他的非字符键.
3.必须同时支持ie和firefox,太低的版本可以不考虑.  
4.用户粘贴的时候也必须保证不会超过允许的最大长度,不能单单考虑用键盘输入.

web开发专家分比较少,只能放100分的帖子.
如果有兄弟帮解决了,我可以非技术分或者捐赠可用分.
谢谢!


------解决方案--------------------

<script language= "javascript ">
function strlength(str){
var l=str.length;
var n=l
for (var i=0;i <l;i++)
{
if (str.charCodeAt(i) <0||str.charCodeAt(i)> 255) n++
}
return n
}

function changeHints(){
var l=strlength(document.form1.NewsTitle.value);
if (l <=100) {
if (document.all!=null) document.all( "hints ").innerHTML= " <font color= '#ff0000 '> 还可以输入 "+(100-l)+ "个字节 </font> "
}
else{
if (document.all!=null) {
document.all( "hints ").innerHTML= " <font color=red> 输入的字节数超出100个字节 </font> "
}
}
return true
}
</script>
....
<td class= "content ">
(标题请少于100个字节(50个汉字), <span id= "hints " color= "red "> <font color= '#ff0000 '> 还可以输入100字节 </font> </span> 。标题应为完整句子,指代要明确,不能使用我市、我县、某某项目等模糊字眼或标题。) <br>
<input NAME= "NewsTitle " type= "text " size= "60 " maxlength=100 value= " <%=NewsTitle%> " onKeyDown= "return changeHints() " onKeyUp= "return changeHints() ">
</td>
......

把text改为textarea


------解决方案--------------------
测试了下,恐怕不太好做,主要是对各种输入法引起的一些keyup或者keypress不触发,感觉最好还是在焦点离开的时候判断,或者在提交的时候判断,只要不清空里面的内容,客户辛苦输入的东西还在,客户应该还是可以接受的吧