检测自然换行javascript

时间:2014-01-23 14:05:15

标签: javascript jquery html textbox

当我输入类似hello world, this is a demo的不可调整大小的文本区域且文本区域足够小时,它将如下所示:

hello world,
this is a demo

这不是由\ n或其他原因造成的。 如何在文本区域中检测到这种自然换行符? 可以在这里找到一个小提琴:http://jsfiddle.net/yx6B7/ 正如你所看到的,有一个换行符,但javascript只是说它是一个没有任何换行符的大行。

2 个答案:

答案 0 :(得分:0)

这不是javascript问题。

查看word-wrapwhite-spaceoverflow css属性。

答案 1 :(得分:0)

最后我在互联网上找到了这个脚本:

function ApplyLineBreaks(strTextAreaId) {
var oTextarea = document.getElementById(strTextAreaId);
if (oTextarea.wrap) {
    oTextarea.setAttribute("wrap", "off");
}
else {
    oTextarea.setAttribute("wrap", "off");
    var newArea = oTextarea.cloneNode(true);
    newArea.value = oTextarea.value;
    oTextarea.parentNode.replaceChild(newArea, oTextarea);
    oTextarea = newArea;
}

var strRawValue = oTextarea.value;
oTextarea.value = "";
var nEmptyWidth = oTextarea.scrollWidth;
var nLastWrappingIndex = -1;
for (var i = 0; i < strRawValue.length; i++) {
    var curChar = strRawValue.charAt(i);
    if (curChar == ' ' || curChar == '-' || curChar == '+')
        nLastWrappingIndex = i;
    oTextarea.value += curChar;
    if (oTextarea.scrollWidth > nEmptyWidth) {
        var buffer = "";
        if (nLastWrappingIndex >= 0) {
            for (var j = nLastWrappingIndex + 1; j < i; j++)
                buffer += strRawValue.charAt(j);
            nLastWrappingIndex = -1;
        }
        buffer += curChar;
        oTextarea.value = oTextarea.value.substr(0, oTextarea.value.length - buffer.length);
        oTextarea.value += "\n" + buffer;
    }
}
oTextarea.setAttribute("wrap", "");
document.getElementById("pnlPreview").innerHTML = oTextarea.value.replace(new RegExp("\\n", "g"), "<br />");

}

哪种方法正常。