代码之家  ›  专栏  ›  技术社区  ›  François P.

字符串长度因Javascript和Java代码而异

  •  20
  • François P.  · 技术社区  · 16 年前

    我有一个JSP页面,其中包含一段Javascript验证代码,在提交时限制为一定数量的字符。我用的是一个 <textarea> <input type="text"> .

    我用 document.getElementById("text").value.length

    我注意到,通过在 <textarea> . 我已经使用Firebug来断言 <textare> 它实际上有2000个字符长。不过,在Java方面,回车符返回get converted to UNIX样式( \r\n 而不是 \n ),因此字符串长度不同!

    我是不是漏掉了什么明显的东西?如果没有,您将如何可靠地(跨平台/浏览器)确保 <textarea> 这是有限的。

    3 回复  |  直到 16 年前
        1
  •  26
  •   Ryan Hendry    10 年前

    这不是一个真正的JavaScript(或Java)问题——两个层都报告了它们正在处理的字符串的准确长度。本例中的问题是,字符串在HTTP传输过程中被转换。

    如果绝对必须确保字符串不超过特定长度,则可以在客户端上模拟此转换,将“\n”的每个实例替换为“\n\r”-,但仅用于长度验证目的:

    textarea.value.replace(/\n/g, "\r\n").length
    
        2
  •  10
  •   Jon Skeet    16 年前

    您是否特别关心使用哪一行结尾?为什么不让Java将“\r\n”转换为“\n”?(请注意,“\r\n”是Windows样式;“\n”是Unix样式。)

    或者,在JavaScript中检查长度时执行相反的操作。

        3
  •  1
  •   JeeBee    16 年前

    您是否将其限制为2000个字符,以便将其放入数据库中的nvarchar(2000)列中?否则,在Java端可能只允许2%的溢出是灵活的。

    /r /r s