Line count calculation of textarea (compatible with ie)

//x = 字母一行的字符数比汉字一行的字符数 如: var x = 65/35
function getCharLengthByStr(str, x) {
    var curLen = 0;
    for (var i = 0; i < str.length; i++) {
        var code = str.charCodeAt(i);
        var pixelLen = code > 255 ? x : 1;
        curLen += pixelLen;
    }
    return curLen;
}
// maxChar = 一行字母的长度
function getRowNumberByTextArea(str, enChars, cnChars) {

if (str == '') return 5;
    var x = enChars / cnChars
    var lines = str.split('\n');
    var rowsNumber = 0;
    for (var i = 0; i < lines.length; i++) {
        var tempRows = Math.ceil(getCharLengthByStr(lines[i], x) / enChars);
        rowsNumber += tempRows == 0 ? 1 : tempRows;
    }
    if (isIE()) return Math.ceil(rowsNumber * 1.4) + 2; //如需需要可把1.4参数提出去, 1.4 为ie下不同字体的放大倍数。需自信调整。
    return rowsNumber+2; //默认加2行
}
// 判断是否为IE
function isIE () { //ie?
    if (!!window.ActiveXObject || "ActiveXObject" in window)
        return true;
    else
        return false;
}
//获取textarea行数, 例如 textarea 默认一行可以为60个英文字符,或者35个汉字。
function getRowNumberByGWTextArea(str) {
    return getRowNumberByTextArea(str, 65, 35);
}

 

{{o.name}}
{{m.name}}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324042132&siteId=291194637