由于某种原因,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的支持不存在......有没有人为此找到了黑客攻击?
答案 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中的一个实现,或者不依赖于这个属性。