首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算还可以输入多少个字

计算还可以输入多少个字

作者头像
joshua317
发布2018-04-16 10:37:11
7050
发布2018-04-16 10:37:11
举报
文章被收录于专栏:技术博文技术博文技术博文

Demo

html页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>还可以输入多少字</title>
<meta name="keywords" content="">
<meta name="description" content="">

<script src="./jquery-1.10.2.js" type="text/javascript"></script>
<script src="./count.js" type="text/javascript"></script>

</head>

<body>
<div>
<span>
<input type="text" name="subject" id="subject" value="" onkeyup="strLenCalc(this, 'checklen', 80);" >
</span>        
<span id="subjectchk">还可输入 <strong id="checklen">80</strong> 个字符</span>
</div>
</body>
</html>

js代码--count.js

var BROWSER = {};
var USERAGENT = navigator.userAgent.toLowerCase();
browserVersion({'ie':'msie','firefox':'','chrome':'','opera':'','safari':'','mozilla':'','webkit':'','maxthon':'','qq':'qqbrowser','rv':'rv'});
if(BROWSER.safari || BROWSER.rv) {
    BROWSER.firefox = true;
}
BROWSER.opera = BROWSER.opera ? opera.version() : 0;

HTMLNODE = document.getElementsByTagName('head')[0].parentNode;
if(BROWSER.ie) {
    BROWSER.iemode = parseInt(typeof document.documentMode != 'undefined' ? document.documentMode : BROWSER.ie);
    HTMLNODE.className = 'ie_all ie' + BROWSER.iemode;
}
var charset =BROWSER.firefox ? document.characterSet : document.charset;

function browserVersion(types) 
{
    var other = 1;
    for(i in types) {
        var v = types[i] ? types[i] : i;
        if(USERAGENT.indexOf(v) != -1) {
            var re = new RegExp(v + '(\\/|\\s|:)([\\d\\.]+)', 'ig');
            var matches = re.exec(USERAGENT);
            var ver = matches != null ? matches[2] : 0;
            other = ver !== 0 && v != 'mozilla' ? 0 : other;
        }else {
            var ver = 0;
        }
        eval('BROWSER.' + i + '= ver');
    }
    BROWSER.other = other;
}

function strlen(str)
{
    return (BROWSER.ie && str.indexOf('\n') != -1) ? str.replace(/\r?\n/g, '_').length : str.length;
}

function mb_cutstr(str, maxlen, dot)
{
    var len = 0;
    var ret = '';
    var dot = !dot ? '...' : dot;
    maxlen = maxlen - dot.length;
    for(var i = 0; i < str.length; i++) {
        len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1;
        if(len > maxlen) {
            ret += dot;
            break;
        }
        ret += str.substr(i, 1);
    }
    return ret;
}

function strLenCalc(obj, checklen, maxlen)
{
    var v = obj.value;
    var charlen = 0;
    var maxlen = !maxlen ? 200 : maxlen;
    var curlen = maxlen;
    var len = strlen(v);
    for(var i = 0; i < v.length; i++)
    {
        if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) {
            curlen -= charset == 'utf-8' ? 2 : 1;
        }
    }
    
    if(curlen >= len) {
        $("#"+checklen)[0].innerHTML = curlen - len;
    } else {
        obj.value = mb_cutstr(v, maxlen, 0);
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档