jquery 2.2 serializeArray()适用于Firefox、Chrome,但不适用于IE(11)
jquery 2.2 serializeArray() working in Firefox, Chrome, but not IE(11)
我有一个需要序列化的表单。它在Chrome和FireFox中运行良好,但在IE11上根本不起作用。我已经将问题缩小到serializeArray()
返回一个空数组。
JSON.stringify($("#enrollmentForm").find($("fieldset")).eq(0).serializeArray());
我创建了一个jsfiddle,在那里我极大地简化了我的代码和表单,以跟踪问题:https://jsfiddle.net/xu8LpmLr/5/
铬的结果:
IE中的结果:
[]
更新:感谢Rion Williams的回应。我的表单中有多个字段集,我只需要地址信息,所以我修改了代码,只序列化了我需要的字段(我还将zip分为两部分):
var enteredAddressData = function() {
var data = $("#enrollmentForm").serializeArray().reduce(function(obj, item) {
var arrayOfAddressElements = ['id','address1','address2','city','state','zip'];
if (arrayOfAddressElements.indexOf(item.name) >= 0) {
if (item.name === 'zip') {
var zipParts = item.value.split('-');
obj['zip5'] = zipParts[0];
if (zipParts.length > 1) {
obj['zip4'] = zipParts[1];
} else {
obj['zip4'] = '';
}
} else {
obj[item.name] = item.value;
}
}
return obj;
}, {});
return { 'address': data };
};
结果:
JSON.stringify(enteredAddressData())
{"address":{"id":"0","address1":"address1value","address 2":"address 2value"
serializeArray()
函数的文档明确指出,它只在表单和/或表单控件的jQuery集合上操作,这可能解释了为什么经常"遵循规则"的Internet Explorer可能会拒绝它。
尝试序列化实际的<form>
本身,而不是底层的fieldset
,这似乎可以按预期工作:
JSON.stringify($("#enrollmentForm").serializeArray())
相关文章:
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- JavaScript不显示剩余字符,但适用于其他页面
- 我如何完善这个Javascript代码,使其只适用于来自图像的链接(而不是来自文本的链接)
- 为什么这只适用于身体部分而不是头部
- 为什么不't此正则表达式适用于重复出现的对
- document.getElementById 对内部 html 的调用适用于 $_POST 和 $_GET 变量,但不
- JavaScript 位置适用于本地主机而不是服务器
- Rally App SDK 2.0:Rallymultiobjectpicker,适用于不显示displayField的
- jQuery事件在Mozilla上不起作用,并且适用于其他浏览器
- Angular.js - 控制器不为索引执行,适用于其余模板
- D3 .on 更改适用于文本而不是图表
- Zillow 数据 - json_encode不起作用 - 适用于常规变量
- 弹出模式仅适用于表格中的第一个元素,第二次单击后不会再次打开
- Phonegap Android项目适用于模拟器,而不是实际的手机
- ajax jonp 不应该适用于 请求的上不存在“访问控制-允许源”标头
- AngularJS:ng-单击不起作用,适用于<按钮>
- Javascript不会在移动设备上加载.适用于桌面
- 为什么我的代码适用于高度:100px,而不是高度:100%
- 拖放区.js + Laravel-多文件上传不起作用(仅适用于一个文件)
- 哪些限制适用于不透明响应