//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); }