0

嗨,
我在从 html textarea 获取数据时遇到了麻烦。textarea 定义如下:

<textarea id="ta" cols=30 rows=15> 
</textarea>  


在这里,textarea 限制为 30 个字符。因此,如果每行的字符数超过 30 个字符,则光标将移动到下一行。效果很好。但是问题是,当我尝试使用 获取该值javascript时,整个 textarea 内容显示为单行(连续字符串),尽管它有多个。
这是我的小提琴

它显示多行,如果行被ENTER键分隔。

4

3 回答 3

2

如果ENTER在输入 a 时按下,<textarea>则会插入换行符。JavaScript 中的换行符是\n. 您不需要对此做任何事情,JavaScript 应始终将其视为换行符。就像 jsshah 一样,您粘贴的代码也适用于我。

于 2012-11-14T09:15:58.143 回答
1

默认情况下,浏览器会在需要时自动对文本进行换行,但这种换行只是视觉上的,或者说是“软”的。它不影响发送到服务器的数据(提交表单时)或内部表示。

如果您使用 in 中的wrap=hard属性textarea,则自动换行在向提交的数据中添加换行符的意义上变得“困难”。但是在我测试的浏览器上,换行符不会出现在您可以在 JavaScript 中访问的内部表示中。(据推测,浏览器在提交时会重新包装文本。)

因此,如果您真的需要包装文本,就像在 JavaScript 中访问的那样,您需要自己做。另一方面,由于自动换行不是实际的用户输入,因此很少有理由将其视为真实的。

于 2012-11-14T09:33:46.123 回答
1

按“回车键”将包含在警报中。

即使使用“新行”,该值仍然是单个字符串。例如:“堆栈溢出”而不按回车键。

"Stack[ENTER KEY]Overflow" 按下回车...仍然会产生一个字符串 "Stack\nOverflow"

var x = "Stack\nOverflow";
alert(x);

元素属性 COLS -> 列,而 ROWS -> 行,很像宽度和高度,但不是真的。

<textarea id="ta" cols=30 rows=15></textarea>
于 2012-11-14T09:19:11.417 回答