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

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

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

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

demo:https://www.html.cn/demo/textarea-num-chack/textarea-num-chack.html

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

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

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

demo:https://www.html.cn/demo/textarea-num-chack/textarea-num-chack1.html

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

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

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

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

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

demo:https://www.html.cn/demo/textarea-num-chack/textarea-num-chack2.html

赞(0) 打赏
未经允许不得转载:WEB前端开发 » 文本域字符数判断(2010年12月30日更新)

评论 18

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

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

    lbfmin9年前 (2009-11-20)回复
  2. #-48

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

    9年前 (2009-11-20)回复
  3. #-47

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

    Chaos9年前 (2009-11-20)回复
  4. #-46

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

    老友记中国站9年前 (2009-11-20)回复
  5. #-45

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

    灰灰9年前 (2009-11-21)回复
  6. #-44

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

    阿义9年前 (2009-11-23)回复
  7. #-43

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

    stri9年前 (2009-11-24)回复
  8. #-42

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

    andi9年前 (2009-12-01)回复
  9. #-41

    输入然后删除呢?

    glonely9年前 (2009-12-02)回复
  10. #-40

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

    qbaty9年前 (2009-12-16)回复
  11. #-39

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

    9年前 (2009-12-16)回复
  12. #-38

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

    测试9年前 (2009-12-29)回复
  13. #-37

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

    fifsky8年前 (2011-01-04)回复
    • 学习了!谢谢!

      8年前 (2011-01-04)回复
  14. #-36

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

    Shaman8年前 (2011-04-06)回复
  15. #-35

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

    lorio8年前 (2011-06-16)回复
  16. #-34

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

    华晨8年前 (2011-07-07)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏