Js文本溢出自动添加省略号ellipsis

原文:
ellipsis: function(value, len, word) {
        //判断value有没有超过指定长度
        if (value && value.length > len) {
            //word的作用就是尽量不让一个完整的单词被部分省略
            if (word) {
                var vs = value.substr(0, len - 2),
                //猜测单词的界限符
                index = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'));
//保留一个容忍长度len - 15,过短的话,影响表现效果
                if (index !== -1 && index >= (len - 15)) {
                    return vs.substr(0, index) + "...";
                }
            }
            return value.substr(0, len - 3) + "...";
        }
        return value;
    }
 
经修改:
 function ellipsis(val, len, word) {
            if (val && val.length > len) {
                if (word) {
                    var vs = val.substr(0, len - 1)
                    var i = Math.max(vs.lastIndexOf(' '), vs.lastIndexOf('.'), vs.lastIndexOf('!'), vs.lastIndexOf('?'))
                    if ( i !== -1 && i >= (len-15) ) {
                        return vs.substr(0, i) + '...'
                    }
                }
                return val.substr(0, len) + '...'
            }
            return val
        }

调用方式:

var aa="你是谁?萨达哈撒";
 var bb=ellipsis(aa,5);
 console.log(bb);

最简单方法:

var str = "just a test hello world";  
function processStr(str,n)  
{  
    var l = str.length;  
    if(l<=n) return str;  
    return str.slice(0,n)+"...";  
}  
document.write(processStr(str,14));  

支持区别中英文:

<html>
<script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>

<body>
    <input type="text" name="username" />
</body>
<script type="text/javascript">

   
    var GetLength = function (str) {
        ///<summary>获得字符串实际长度,中文2,英文1</summary>
        ///<param name="str">要获得长度的字符串</param>
        var realLength = 0, len = str.length, charCode = -1;
        for (var i = 0; i < len; i++) {
            charCode = str.charCodeAt(i);
            if (charCode >= 0 && charCode <= 128) realLength += 1;
            else realLength += 2;
        }
        return realLength;
    };


    //js截取字符串,中英文都能用  
    //如果给定的字符串大于指定长度,截取指定长度返回,否者返回源字符串。  
    //字符串,长度  

    /** 
     * js截取字符串,中英文都能用 
     * @param str:需要截取的字符串 
     * @param len: 需要截取的长度 
     */
    function cutstr(str, len) {
        var str_length = 0;
        var str_len = 0;
        str_cut = new String();
        str_len = str.length;
        for (var i = 0; i < str_len; i++) {
            a = str.charAt(i);
            str_length++;
            if (escape(a).length > 4) {
                //中文字符的长度经编码之后大于4  
                str_length++;
            }
            str_cut = str_cut.concat(a);
            if (str_length >= len) {
                str_cut = str_cut.concat("...");
                return str_cut;
            }
        }
        //如果给定字符串小于指定长度,则返回源字符串;  
        if (str_length < len) {
            return str;
        }
    }
$(function () { 
     $("input[name=username]").bind('keyup', function () {
      if (GetLength($(this).val()) > 10) { 
       $(this).val(cutstr($(this).val(), 10)); 
       return; 
     } 
  }); 
}); 
</script> 
</html>