文本域字符数判断(2010年12月30日更新)

时间:2010年12月30日作者:愚人码头查看次数:8,850 views评论次数:18

————-2009 年 11 月 19 日 22:03:06——————–

本来也写过类似这个小功能《js对输入框的字数限制》,但是今天有朋友说要个简单的貌似twitter微博输入的功能!所以写了一个。

基本的思路:当文本域获取焦点后,当键盘松开时,判断里面的字符是否为空,从而改变按钮的显示状态和文字的个数。

demo:http://www.css88.com/demo/textarea-num-chack/textarea-num-chack.html

=============2009年11月24日更新============

感谢各位的留言和测试,特别感谢Chaos提供的解决方案,灰灰关于粘贴的测试!

在以上两位的建议和测试下重新修改了一下源代码,主要文本框获得焦点时启动定时器,计算文本框的字数。

demo:http://www.css88.com/demo/textarea-num-chack/textarea-num-chack1.html

=============2010年12月30日更新============

今天接到一个类似的需求,就是想腾讯微博和新浪微博那样,将中文视为一个字符,将英文视为半个字符,也就是两个英文字符按一个字符计算。所以我再原来的基础上做了调整,主要的思路是:

将一个中文字符转换成两个字符计算,一个英文字符按一个英文字符计算,具体代码:

var newvalue = obj.value.replace(/[^\x00-\xff]/g, “**”);

然后在显示已经输入字符数中除以2,记住向上去整(parseInt方法),不然就出现0.5个字符了。

demo:http://www.css88.com/demo/textarea-num-chack/textarea-num-chack2.html

声明: 本文采用 BY-NC-SA 协议进行授权 | WEB前端开发
转载请注明转自《文本域字符数判断(2010年12月30日更新)

如果你读了我的文章,觉得有帮助: 说明
标签:,分类:JS
16条评论
  1. lbfmin留言于:2009年11月20日08:16

    是不是没东西可写了,这有意义吗?

    [回复]

  2. 愚人码头留言于:2009年11月20日08:46

    意义在于我帮助了别人,呵呵。

    [回复]

  3. Chaos留言于:2009年11月20日09:55

    为何不用定时器?
    文本框获得焦点时启动定时器,计算文本框的字数,这个比监听键盘事件靠谱多了

    [回复]

  4. 老友记中国站留言于:2009年11月20日16:35

    在chrome等浏览器下,因为输入时不同于ie,剩余数字就会不断变化,不是bug。先是 gongjv 已经6个字符了,打上去后成2个字符,释放4个。呵呵。

    [回复]

  5. 灰灰留言于:2009年11月21日23:36

    用鼠标复制粘贴就有BUG啰,越粘贴,文字数越少
    :-)

    [回复]

  6. 阿义留言于:2009年11月23日10:45

    哈哈中文字符长度没换算成2个字符哈

    [回复]

  7. stri留言于:2009年11月24日02:24

    刚在看过这样的做法.应该还得考虑无JS状态时.还有那个”你还能输入多少字”得用JS生成结点.

    [回复]

  8. andi留言于:2009年12月01日10:51

    浏览器端的字符数限制与数据据有什么关系?一个汉字字节,一个英语占一个字节,某些情况下,汉字会占3个字节。如果考虑这些,有没有好解决方案,让客户输入的东西到了服务器不会被截断呢?

    [回复]

  9. glonely留言于:2009年12月02日17:33

    输入然后删除呢?

    [回复]

  10. qbaty留言于:2009年12月16日09:53

    即便是现在这个样子也有会有问题…

    [回复]

  11. 愚人码头留言于:2009年12月16日09:57

    @qbaty 还有什么问题,请指出!谢谢。

    [回复]

  12. 测试留言于:2009年12月29日16:36

    好像还不能区分汉字和字母,汉字和字母所占的字节不一样.

    [回复]

  13. fifsky留言于:2011年01月04日10:32

    由于IE8对于innerHTML的BUG,在采用innerHTML最字数显示进行更改的时候会导致CPU飙升,而导致舒服法卡住,所以sina采用了定时器,由定时器去200毫秒innerHTML
    http://blog.chibaole.com/web/10091.html

    [回复]

    愚人码头 回复于:

    学习了!谢谢!

    [回复]

  14. Shaman留言于:2011年04月06日17:58

    定时器是在获取焦点时启用了,那失去焦点后为什么不关闭定时器呢?

    [回复]

  15. lorio留言于:2011年06月16日16:54

    中文输入满后输入一个英文就会超出0个字符

    [回复]

  16. 华晨留言于:2011年07月07日11:39

    会出现“已超出0字”的情况

    [回复]

发表评论

*

*