在IE中使用新的html5表单属性序列化失败

Serialize fails in IE with new html5 form attribute

本文关键字:表单 html5 属性 序列化 失败 IE      更新时间:2023-09-26

由于某种原因,对于我尝试序列化的表单,serialize返回一个空字符串。

两个相同的表单,其中一个具有新的html5 form属性:

<form id="foo"></form>
<input form="foo" type="text" placeholder="cat" value="cat" name="cat" id="cat" />
<form id="bar">
    <input type="text" placeholder="dog" value="dog" name="dog" id="dog" />
</form>

在这两个上运行serialize,其中一个返回正确,新的html5表单返回一个空字符串。

我希望我正在做一些愚蠢的事情,因为这对我来说是一个主要问题,因为我无法控制这些表单是如何编写的。我只有javascript钩子与这个CMS我正在使用。

序列化:

console.log($('form#foo').serialize());
console.log($('form#bar').serialize());

这在我测试过的所有其他浏览器上都可以正常工作,但在ie, 8,9,10或11中不行!

编辑:我刚刚检查了:http://www.w3schools.com/html/html5_form_attributes.asp,对IE的支持不存在…有人找到破解方法了吗?

: http://jsfiddle.net/875dks8c/5/

修复jQuery:

而不是更传统的在整个表单上序列化。根据jQuery,可以将单个表单元素序列化为。有了这个,我找到了输入选择器。从那里,我所要做的就是使用表单id作为选择器的一部分,一切都很好。

$(':input[form="foo"]').serialize();
// returns cat=cat

测试:ie8-11

MDN文档没有确认与IE的兼容性,并且MSDN文档没有在输入中引用form属性。

所以我猜IE还不支持这个属性,你将不得不等待(并希望)在IE12中实现,或者不依赖于这个属性。