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

时间:2014-08-14 00:30:47

标签: javascript jquery html5 forms serialization

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

两个相同的表单,一个带有新的html5表单属性:

<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>

在这两个上运行序列化,一个正确返回,新的html5表单返回一个空字符串。

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

使用以下命令序列化:

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

这适用于我测试过的所有其他浏览器,但不适用于8,9,10或11!

编辑:我刚检查过:http://www.w3schools.com/html/html5_form_attributes.asp,并且对IE的支持不存在......有没有人为此找到了黑客攻击?

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

2 个答案:

答案 0 :(得分:1)

使用jQuery修复:

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

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

经测试:ie8-11

答案 1 :(得分:0)

MDN documentation未确认与IE的兼容性,MSDN documentation未在输入中引用表单属性。

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