textarea 的行數計算(兼容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);
}
相關文章
相關標籤/搜索