为什么当val()没有时,serializeArray()会返回小的支架箭头?

时间:2014-10-22 18:48:05

标签: javascript jquery carriage-return

我在序列化表单时出现问题,并且使用jQuery textarea方法在serializeArray()的序列化中获取这些小小的箭头

enter image description here

但是,当我使用val()方法时,结果如下:

enter image description here

谁能告诉我他们为什么不同?我是如何摆脱小马车箭头并使其像val()结果一样,因为小箭头给我带来了问题? (顺便问一下小箭的正确用语是什么?)

2 个答案:

答案 0 :(得分:2)

这是因为serializeArray用" \ r \ n"替换回车符,而.val在添加它们的浏览器中删除它们(IE和Opera)。

https://github.com/jquery/jquery/blob/master/src/serialize.js

这导致了一些奇怪的结果:

$([some-selector]).val() != $([some-form]).serializeArray()[0].value

请参阅此jsfiddle以获取示例:

https://jsfiddle.net/434sj450/

以下是此行为的旧jquery错误/解释:

http://bugs.jquery.com/ticket/6876

答案 1 :(得分:0)

您的结果没有差异。

检查这样的对象时,检查器只会将换行符显示为托架箭头。尝试并双击该值,您正确地看到它展开以显示遍布3行的完整字符串。

.val()返回textarea的字符串值。

.serializeArray()返回表单中的元素数组。

这两行将在控制台中输出相同的内容:

console.log($(this).val());
console.log($('form').serializeArray()[0].value);