2011-12-09 11 views
0

これはprevious questionの拡張です。私はいくつかの追加の問題に遭遇した。JavaScriptを使用してテキストエリアを読み込む

私はダイナミックテキストエリアボックスをフォームにロードしています。理由は問いませんが、JavaScriptを使ってこれらのフィールドに値を設定する必要があります(AJAXなどの処理が必要です)。単純化するために、私のtextareaに "myTextarea"という名前があり、リクエストパラメータ "myRequestParam"を設定したいとしましょう。だから私のような何かをしたいと思います。私の前の質問から

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

を、私は、これはいくつかの問題を解決することを発見しました:

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

私はupdateTextareaTextのための異なる実装の数を試してみましたが、何も動作していないようです。改行と特殊文字の両方を扱う必要があります。

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

上記ルーズ改行の全て試し#2

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

を試し#1

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

を試しますnd /またはエスケープされた値としていくつかの特殊文字を表示します。

Test 

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

誰もが異なる例すべてを処理するための正しい方法を知っています:私は、テストのため、次のmyRequestParam値を使用してきましたか?注意点として、myRequestParam値はDBから移入されていると私は%0Aとしてエスケープされているが、私はそれは私がやるべきものだかどうかわからないのです\r\nとして改行を戻ってきています。 JavaScriptはもともと\r\nを処理しませんでした(これは、終了していない文字列などについては不平を言います)。

答えて

1

私が提出したanother questionを参照してください。トリックは、背面からの脱出を取り除き、escape<c:out>のもの全体を削除し、その代わりにStringEscapeUtils.escapeJavaScriptを使用するEL関数を使用しました。

0

のjQueryを試してみてください:

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

または

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

はそれがトリックを行うだろうと思います。

+0

私の会社はjQueryの使用を承認していません。好奇心のために、jQueryは名前でIDを取得することはできますか? –

+0

ああ、そんな痛み! jQueryは非常に素晴らしく、時間を大幅に節約できます。そして、jQueryでは、id、name、class、contentで任意の項目を取得できます。http://api.jquery.com/category/を見てください。セレクタ/ – ricardordz

0

限定されたローカルで試してみましたが、#2の機能で試しました。

ヘッダー:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

のjavascript:!updateTextareaText( "txtarea"、「テスト\ nは\ nNewlineと特別 `\〜@の#$%\^\ & *()_ + - = {} | [ ] \:\ ";」<>、// \näöüÄÖÜß?。");

だから、あなたが取得する文字列は、おそらくエスケープされていません(\ '、&など\)、コモンズでの場合、ApacheのStringEscapeUtils Langsは(http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringEscapeUtils.html#escapeJavaScript%28java.lang.String%29)を支援します。それ以外は

、あなたは「\と」置き換えることで、このjavascriptの場合の変換を行う必要がありますそういうわけではありません。

関連する問題