繁体   English   中英

asp.net多行文本框在javascript中忽略换行

[英]newlines are ignored in javascript for asp.net multiline textbox

我在asp.net表单上有一个多行文本框,并且在过去的事件中正在调用以下javascript函数。

如果我粘贴任何数据,将忽略新行。

我不知道这是否与javascript函数有关。 我可以在内部文本中看到“ / n”,但是以某种方式无法正确显示它。 “ hello \\ nworld”正在渲染“ hello world”

function handlepaste(textbox, e, label, len) {
    var savedcontent = textbox.innerHTML;
    if (e && e.clipboardData && e.clipboardData.getData) {// Webkit - get data from clipboard, put into editdiv, cleanup, then cancel event
        if (/text\/html/.test(e.clipboardData.types)) {
            textbox.innerHTML = e.clipboardData.getData('text/html');
        }
        else if (/text\/plain/.test(e.clipboardData.types)) {
            textbox.innerHTML = e.clipboardData.getData('text/plain');
        }
        else {
            textbox.innerHTML = "";
        }
        waitforpastedata(textbox, savedcontent);
        if (e.preventDefault) {
            e.stopPropagation();
            e.preventDefault();
        }
        return false;
    }
    else {// Everything else - empty editdiv and allow browser to paste content into it, then cleanup
        textbox.innerHTML = "";
        waitforpastedata(textbox, savedcontent, label, len);
        return true;
    }
}

function waitforpastedata(elem, savedcontent, label, len) {
    if (elem.childNodes && elem.childNodes.length > 0) {
        processpaste(elem, savedcontent, label, len);
    }
    else {
        that = {
            e: elem,
            s: savedcontent
        }
        that.callself = function () {
            waitforpastedata(that.e, that.s, label, len)
        }
        setTimeout(that.callself, 20);
    }
}

function processpaste(textbox, savedcontent, label, len) {
    pasteddata = textbox.innerHTML;

    if (savedcontent.length > 0) {
        textbox.innerHTML = savedcontent + pasteddata ;
    }

    if (pasteddata.length > len) {
        textbox.value = textbox.value.substring(0, len);
        document.getElementById(label).className = "red-text";
        document.getElementById(label).innerHTML = 'You are trying to type too much information ';
    }
    else {
        document.getElementById(label).className = "grey-text";
        document.getElementById(label).innerHTML = textbox.value.length.toString() + ' of ' + len + ' chars';
    }
}

可能是因为HTML无法按照您期望的方式呈现新行。 请尝试<br>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM