原生JS表单序列化
2024-08-29 08:15:52
// 表单序列化,IE9+
HTMLFormElement.prototype.serialize = function() {
var form = this;
// 表单数据
var arrFormData = [], objFormData = {}; [].slice.call(form.elements).forEach(function(ele) {
// 元素类型和状态
var type = ele.type, disabled = ele.disabled; // 元素的键值
var name = ele.name, value = encodeURIComponent(ele.value || 'on'); // name参数必须,元素非disabled态,一些类型忽略
if (!name || disabled || !type || (/^reset|submit|image$/i.test(type)) || (/^checkbox|radio$/i.test(type) && !ele.checked)) {
return;
} type = type.toLowerCase(); if (type !== 'select-multiple') {
if (objFormData[name]) {
objFormData[name].push(value);
} else {
objFormData[name] = [value];
}
} else {
[].slice.call(ele.querySelectorAll('option')).forEach(function(option) {
var optionValue = encodeURIComponent(option.value || 'on');
if (option.selected) {
if (objFormData[name]) {
objFormData[name].push(optionValue);
} else {
objFormData[name] = [optionValue];
}
}
});
}
}); for (var key in objFormData) {
arrFormData.push(key + '=' + objFormData[key].join());
} return arrFormData.join('&');
};
最新文章
- Java实现上传下载
- php函数、php定义数组和数组遍历
- SQL Server SA 密码丢失无法连接数据库怎么办?
- c语言头文件和源文件不在同一个目录
- 如何使用 orachk 工具
- careercup-排序和查找 11.4
- (转) UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- 开发记录_自学Python写爬虫程序爬取csdn个人博客信息
- 解决WP7的32位图像渐变色色阶问题
- Redis 集群解决方案比较
- 关于eclipse创建Maven项目创建的问题
- JAVA中的静态成员
- 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?
- 洛谷P1233 木棍加工题解 LIS
- Zookeeper原理、安装、基本使用和API
- February 12th, 2018 Week 7th Monday
- Maven 项目 查找指定包的引用位置
- git 远程删除文件
- Spark RDD操作之Map系算子
- 修改json文件
热门文章
- 北京Uber优步司机奖励政策(12月8日)
- 佛山Uber优步司机奖励政策(1月11日~1月17日)
- 「日常训练」Kefa and Park(Codeforces Round #321 Div. 2 C)
- 小程序页面的四种文件(JSON、WXML、WXSS、JS)加载顺序
- Java学习 · 初识 多线程
- java并发总览
- 剑指offer-从上往下打印二叉树22
- opencv-学习笔记(6)图像梯度Sobel以及canny边缘检测
- Python高级编程-序列化
- POJ 1269 Intersecting Lines(直线求交点)