2010-11-16 56 views
3

我在包含2个新行字符但没有回车符的窗体的文本字段中输入数据。 (我可以通过js中的strlen或使用str.charCodeAt()函数进行确认。)在javascript-php的情况下回车的意义是什么?

现在我将此表单提交给一个php脚本,它以某种方式接收一个回车符以及新的行字符。

所以基本上,在js中的\n在php中变成\r\n

我有2个问题:

  1. 没有人知道它为什么会发生?
  2. 为什么回车真的用于?

用例:服务器端和客户端的表单验证,用于限制字段的字符数。

+0

您必须指的是textarea,而不是文本字段 – stillstanding 2010-11-16 20:03:48

+0

是的。它是一个文本区域。 – sbr 2010-11-16 20:16:50

回答

4

JavaScript将换行符视为\n,但是当您通过HTTP提交表单时,JavaScript与它无关(除检查文本外)。 Windows将换行符视为\r\n,因此当您使用Windows并在文本框中按回车键时,它实际上会在框中输入\r\n。当您将这些数据发布到服务器时,JavaScript不会执行此操作(除非您使用Ajax),否则您的浏览器会这样做。您的浏览器将使用与您的操作系统相同的换行符设置,这就是为什么您在PHP文件中看到它们而不是在JavaScript中看到它们的原因。不同的操作系统对待换行符的方式不同有关更多背景信息,请参见here

编辑
回车实际上来自旧的打印机命令。回车意味着“将打印机墨盒送回到行的开头”,换行符(或换行符)表示“到页面上的下一行”。

+0

我正在使用mac作为web服务器。我已经从Mac和Windows机器上尝试过浏览器。与IE,Chrome,FF。 – sbr 2010-11-16 20:26:58

+0

@Ron - 如果你想知道如何解决它,你可以尝试搜索并用C#或JavaScript代替提交的字符串。 – 2010-11-16 21:07:56

0

浏览器正在用\r\n取代\n。现在只需要将光标返回到输出控制台/终端的第一列,以及不能单独处理LF的遗留系统,就需要CR。

相关问题