原生js实现form表单序列化的方法


Posted in Javascript onAugust 02, 2018

当我们有form表单而且里面的表单元素较多时,咱们总不能一个个去获取表单元素内的值来进行拼接吧!这样会很让人蛋疼!为了方便与后台交互并且提高自己的开发效率,并且不让你蛋疼;我们一起用原生来写一个表单序列化方法:

先介绍一下jquery中有相应的表单序列化的方法:

1.serialize()方法

格式:var data = $("form").serialize();

功能:将表单内容序列化成一个字符串。

这样在ajax提交表单数据时,就不用一一列举出每一个参数。只需将data参数设置为 $("form").serialize() 即可。

2.serializeArray()方法

格式:var jsonData = $("form").serializeArray();

功能:将页面表单序列化成一个JSON结构的对象。注意不是JSON字符串。

比如,[{"name":"lihui", "age":"20"},{...}] 获取数据为 jsonData[0].name;

下面我们用原声js来实现我们的form表单序列化的函数;

首先我们列明步骤:

1)先获取form表单使用ById或者是forms;

2)获取后通过elements 取到表单中所有元素的数组;

3)之后进行遍历判断类型(根据类型做相应的对象拼接)实现序列化对象;

代码如下:

function formser(form){
 var form=document.getElementById(form);
 var arr={};
 for (var i = 0; i < form.elements.length; i++) {
 var feled=form.elements[i];
 switch(feled.type) {
 case undefined:
 case 'button':
 case 'file':
 case 'reset':
 case 'submit':
 break;
 case 'checkbox':
 case 'radio':
 if (!feled.checked) {
 break;
 }
 default:
 if (arr[feled.name]) {
 arr[feled.name]=arr[feled.name]+','+feled.value;
 }else{
 arr[feled.name]=feled.value;
 
 } 
 }
 }
 return arr
 },

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery.each()用法分享
Jul 31 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
Dec 10 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
JS实现让访问者自助选择网页文字颜色的方法
Feb 24 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
JavaScript对Json的增删改属性详解
Jun 02 Javascript
jQuery 获取页面li数组并删除不在数组中的key
Aug 02 Javascript
jQuery中的select操作详解
Nov 29 Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
浅谈Vue数据响应思路之数组
Nov 06 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
Aug 02 #Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 #Javascript
vue组件挂载到全局方法的示例代码
Aug 02 #Javascript
原生js封装的ajax方法示例
Aug 02 #Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 #Javascript
详解Angular中通过$location获取地址栏的参数
Aug 02 #Javascript
JavaScript防止全局变量污染的方法总结
Aug 02 #Javascript
You might like
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP学习之整理字符串
2011/04/17 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
JS 对象介绍
2010/01/20 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
react redux入门示例
2018/04/19 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python使用pickle模块储存对象操作示例
2018/08/15 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
《鞋匠的儿子》教学反思
2014/03/02 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
三年级学生期末评语
2014/12/26 职场文书
葬礼主持词
2015/07/02 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers