【发布时间】:2015-11-22 03:28:08
【问题描述】:
我正在编写一个 JavaScript 应用程序,它将检查用户输入的回车符 (Hex 0D) 和换行符 (Hex 0A),但是,如果将文本粘贴到 Web 表单 textarea 字段中,回车符就会消失,只留下换行符作为换行符。我需要识别回车以正确处理数据。
这是一个最小的例子:
function checkForCR() {
if (/\r/.test(document.crform.sandbox.value)) {
alert('Carriage Returns found.');
} else {
alert('Carriage Returns NOT found.');
}
return false;
}
<form name='crform' onsubmit="return checkForCR();">
<textarea name="sandbox" cols="50" rows="5"></textarea>
<br />
<input type="submit" value="Check for Carriage Returns">
</form>
如果我将一些包含回车的文本粘贴到该字段中,无论我粘贴什么,我都无法获得对 \r 的肯定测试。
这是浏览器中文本区域字段的正常行为吗?有什么方法可以保留回车符以及网络表单输入中的换行符?
【问题讨论】:
-
请注意,自动换行不会创建换行符。此外,大多数浏览器使用
\n作为换行符,这似乎是work fine。 -
你在不同的浏览器上检查过这个吗?我相信标准是文本区域中的换行符应表示为 \n\r,但并非所有浏览器都尊重这一点。
-
我已经在 Chrome(版本 44.0.2403.155)和 Windows 上的 Internet Explorer(版本 9.08.112)上进行了检查。我也在 Linux 上尝试过 Chrome(版本 44.0.2403),但我得到了相同的结果。
-
我正在从具有 DOS 格式换行符的文件中复制和粘贴,并已使用二进制编辑器检查文本中是否存在
\r字符,但web-form 无法看到这些字符。 -
This answer 包含管理用户输入中换行符处理规则的精彩摘要,以及指向 W3 规范的链接。
标签: javascript html