使用JavaScript填充Textareas

时间:2011-12-09 17:19:26

标签: javascript jsp dom textarea jstl

这是我问的previous question的扩展名。我遇到了一些其他问题。

我正在加载带有动态textarea框的表单。不要问为什么,但我需要使用JavaScript填充这些字段(必须处理AJAX的东西等)。为简化起见,我只想说我的textarea名称为“myTextarea”,我想填充请求参数“myRequestParam”。所以我想做一些像:

updateTextareaText("myTextarea", "${myRequestParameter}");

从我之前的问题,我发现这解决了一些问题:

updateTextareaText("myTextarea", unescape('<c:out value="${myRequestParam}" />'));

我为updateTextareaText尝试了许多不同的实现,但似乎没有任何效果。我需要处理换行符和特殊字符。

尝试#1

function updateTextareaText(textareaElementName, newText) {
    var textareaBox = document.getElementsByName(textareaElementName)[0];
    textareaBox.innerHTML = newText;
}

尝试#2

function updateTextareaText(textareaElementName, newText) {
    var textareaBox = document.getElementsByName(textareaElementName)[0];
    textareaBox.value = newText;
}

尝试#3

function updateTextareaText(textareaElementName, newText) {
    var textareaBox = document.getElementsByName(textareaElementName)[0];

    var existingNodes = textareaBox.childNodes;
    if (existingNodes.length > 0) {
        textareaBox.removeChild(existingNodes[0]);
    }

    var newTextNode = document.createTextNode(newText);
    textareaBox.appendChild(newTextNode);
}

以上所有松散的换行符和/或显示一些特殊字符作为其转义值。我一直在使用以下myRequestParam值进行测试:

Test

Newline and Special `~!@#$%^&*()_+-={}|[]\:";'<>?,./

有谁知道处理所有不同情况的正确方法?作为旁注,myRequestParam值将从数据库填充,并返回换行符\r\n,我已将其作为%0A转义,但我不确定这是否应该是这样做。 JavaScript最初不会处理\r\n(它会抱怨未终止的字符串等)。

3 个答案:

答案 0 :(得分:1)

请参阅我提交的another question。诀窍是删除背面和整个escape<c:out>内容的转义,而是使用利用StringEscapeUtils.escapeJavaScript的EL函数。

答案 1 :(得分:0)

尝试jQuery:

$('#textAreaId').val('MyValue');

$('#textAreaId').html('MyValue');

猜猜它可以解决问题。

答案 2 :(得分:0)

在有限的本地尝试中,它使用了#2功能(仅尝试过那个功能)。

标题:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

javascript:updateTextareaText(“txtarea”,“Test \ n \ nNewline and Special` \〜!@#$%\ ^ \&amp; *()_ + - = {} | [] \:\”;' &LT;&GT;?,// \näöüÄÖÜß“);

所以你得到的String可能没有被转义(\',\&amp;等等),在这种情况下,Commons Langs中的Apache的StringEscapeUtils会帮助(http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringEscapeUtils.html#escapeJavaScript%28java.lang.String%29)。

除此之外,你必须通过替换'with \'等来对这个javascript案例进行转换......不是很好。