Discuz教程网

新浪微博字数统计 textarea字数统计实现代码

[复制链接]
authicon dly 发表于 2011-9-6 20:46:25 | 显示全部楼层 |阅读模式
  1. /*
  2. * 从新浪微博上抄的
  3. * */
  4. var getLength = (function(){
  5. var trim = function(h) {
  6. try {
  7. return h.replace(/^\s+|\s+$/g, "")
  8. } catch(j) {
  9. return h
  10. }
  11. }
  12. var byteLength = function(b) {
  13. if (typeof b == "undefined") {
  14. return 0
  15. }
  16. var a = b.match(/[^\x00-\x80]/g);
  17. return (b.length + (!a ? 0 : a.length))
  18. };

  19. return function(q, g) {
  20. g = g || {};
  21. g.max = g.max || 140;
  22. g.min = g.min || 41;
  23. g.surl = g.surl || 20;
  24. var p = trim(q).length;
  25. if (p > 0) {
  26. var j = g.min,
  27. s = g.max,
  28. b = g.surl,
  29. n = q;
  30. var r = q.match(/(http|https):\/\/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-A-Z0-9a-z\$\.\+\!\_\*\(\)\/\,\:;@&=\?~#%]*)*/gi) || [];
  31. var h = 0;
  32. for (var m = 0,
  33. p = r.length; m < p; m++) {
  34. var o = byteLength(r[m]);
  35. if (/^(http:\/\/t.cn)/.test(r[m])) {
  36. continue
  37. } else {
  38. if (/^(http:\/\/)+(weibo.com|weibo.cn)/.test(r[m])) {
  39. h += o <= j ? o: (o <= s ? b: (o - s + b))
  40. } else {
  41. h += o <= s ? b: (o - s + b)
  42. }
  43. }
  44. n = n.replace(r[m], "")
  45. }
  46. return Math.ceil((h + byteLength(n)) / 2)
  47. } else {
  48. return 0
  49. }
  50. }
  51. })();
复制代码



上一篇:Javascript面向对象编程(三) 非构造函数的继承
下一篇:JS target与currentTarget区别说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 03:14

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表