как обрабатывать многострочный текстовый ввод, если пользователь нажал клавишу «ввод / возврат» - PullRequest
1 голос
/ 07 ноября 2011

моя кодировка:

 ...
 <textarea name="TextArea1" id="TextArea" style="height ; width" ></textarea>
 ...
 <script type="text/javascript">
 var txt_element = document.getElementById("TextArea");
 document.write (txt_element.childNodes[0].nodeValue);
 </script>
 ...

но он не распознает нажатой клавишу "ввод / возврат", вместо этого он показывает ""

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

Чтобы расширить ответ Криса, проблема в том, что браузер отображает текст, который вы пишете, так же, как и любой другой фрагмент HTML, что означает, что пробел (включая возврат каретки) обрабатывается как разделитель слов, не разделитель строки или абзаца. И несколько последовательных пробельных символов сокращаются до одного пробела. Это объясняется далее в спецификации html .

Это отличается от того, как он обрабатывает текст в элементе textarea.

Итак, как предложил Крис, вам нужно заменить возврат каретки в вашей строке на элементы html <br>:

var enteredText = document.getElementById("TextArea").value;
var updatedText = enteredText.replace(/\n/g, '<br />');
document.write(updatedText);

Примечание: вы должны иметь возможность получить значение текстовой области непосредственно с помощью .value вместо того, чтобы сказать .childNodes[0].nodeValue.

Примечание 2: Я повторяю то, что сказал Крис о document.write() - обычно это не лучший вариант.

Примечание 3: Если вы работаете с системой, отличной от Windows, вам также может потребоваться заменить \r.

0 голосов
/ 07 ноября 2011

Текстовые области используют \n для обозначения новой строки, что-то вроде этих строк должно работать:

string = document.getElementById("TextArea")childNodes[0].nodeValue;
string = string.replace(/\n/g, '<br />');
document.write('string');

Не уверен, что вы просто дурачитесь, но я вынужден упомянуть, что в целомВы никогда не должны использовать document.write ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...