最近做一个简单的字数限制碰到问题,就是使用jquery来限制textarea里面的字数的时候,碰到两个问题
1.用户输入的触发,比如退格,输入、粘贴,刚开始的时候绑定的是onkeyup onpaste 事件,但是体验就是不爽,用户使用拼音输入法的时候,拼写的字母也被keyup触发了,后来又发现了oninput事件,但是ie不支持,查了一下资料,原来ie全系列支持propertychange事件,于是首先判断用户的浏览器类型,然后决定绑定事件,问题解决。
2.在解决1的问题后,测试反映,ie系列下在用户输入一定字数后,光标就会跑到首尾,有时候甚至会把用户的输入全部干掉~ 可恶的ie,这个问题的解决是不要使用value,使用text即可
附加个bug,就是ie7的propertychange有bug,会不断地异步执行,然后抛出 stack overlimit的错误,所以加了一个syncProcessSign
还有截取字符串要考虑中文的情况
代码如下:
代码如下 | 复制代码 |
function checkcontent(){ if($.syncProcessSign) return ; $.syncProcessSign = true; var desc = $("#papercontent").val(); var curLength=desc.realLength(); if(curLength >= 35) { $("#papercontent").val($("#papercontent").val().substring(0, 35));//此处最好换成您的中文截取方式 //$("#cannum").text(0);//可以显示字数 }else{ //$("#cannum").text(200-curLength);//可以显示字数 } $.syncProcessSign = false; } $(document).ready(function(){ if($.browser.msie&&$.browser.version!='9.0') //判断浏览器 { //ie浏览器 $('#papercontent').bind('propertychange', function() { var content = $("#papercontent").val(); var curLength=content.length; if(curLength > 35) { $(this).text($(this).text().substring(0, 35)); } //$("#cannum").text(140-curLength); //$("#nownum").text(curLength); }); }else{ //非ie浏览器 $('#papercontent').bind('input', function() { checkcontent(); }); } }); |
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级