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>