Это расширение предыдущего вопроса , который я задал.Я столкнулся с некоторыми дополнительными проблемами.
Я загружаю форму с динамическими текстовыми полями.Не спрашивайте почему, но мне нужно заполнить эти поля с помощью JavaScript (должен иметь дело с AJAX и т. Д.).Для упрощения скажем, что моя текстовая область имеет имя «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
(он жаловался бы на неопределенные строки и т. Д.).