form表单转换为json格式,支持数组

$.fn.serializeObject = function () {

var keyValues = this.serializeArray();

var pattern=/\[(\d+)\]/;

var filter_keys = [],

normal_keys = keyValues.filter(function (v, i) {

if (~v.name.indexOf(‘.‘)||~pattern.test(v.name)) {

filter_keys.push(v);

return false

}

return true;

})

var resultJson = {};

filter_keys.forEach(function (v, i, ary) {

var v_ary = v.name.split(‘.‘),

v_last = v_ary.length - 1;

var deal = function (obj, j, array) {

var me = arguments.callee,

islast = j === v_last ? true : false;

if (islast&&!pattern.test(array[j])) {

if(typeof obj ==‘array‘){

return obj.push(v.value);

}else{

if(obj[array[j]]){

obj[array[j]]+=‘,‘+v.value||‘‘;

}else{

obj[array[j]] = v.value || ‘‘;

}

return;

}

}else if(islast&&pattern.test(array[j])){

var name = array[j].substr(0, array[j].indexOf(‘[‘));

var index = array[j].match(pattern)[1];

if (!obj[name]) {

obj[name] = [];

}

if (obj[name].length<= index) {

return obj[name].push(v.value||‘‘);

}

}

var nextObj;

if (pattern.test(array[j])) {

var name = array[j].substr(0, array[j].indexOf(‘[‘));

var index = array[j].match(pattern)[1];

if (!obj[name]) {

obj[name] = [];

}

if (obj[name].length<= index) {

nextObj={};

obj[name].push(nextObj);

}else{

nextObj=obj[name][index];

}

} else {

if (!obj[array[j]]) {

obj[array[j]] = {};

}

nextObj=obj[array[j]];

}

return me(nextObj, j + 1, array);

}

deal(resultJson, 0, v_ary);

});

normal_keys.forEach(function (v) {

resultJson[v.name] = v.value;

});

return resultJson;

}

1.表单input等name命名如下book[0].title

2.支持多级数组

3.表单数组下标必须按照顺序并从0开始

4.有相同name标签将合并多个name的值并以“,”分割

时间: 2024-10-05 20:09:33

form表单转换为json格式,支持数组的相关文章

将Form表单转换为JSON格式

/********************************** * * 发送短信的JS * **********************************/ (function($) { $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o

form表单转换为Json字符串数据

https://github.com/marioizquierdo/jquery.serializeJSON 效果图 加载使用 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.serializejson.js"></script>

javascript-js将form表单序列化[json字符串、数组、对象]

1.序列化为字符串 $("#Form").serialize();//name=zhangsan&sex=1&age=20   2.序列化为数组 $("#form").serializeArray();//[Object, Object, Object] 3.序列化为对象 function getFormJson(form) { var o = {}; var a = $(form).serializeArray(); $.each(a, funct

form表单转化json对象

利用 $.fn 可以让每一个jquery 对象都能直接使用这个方法. //form表单转化json对象$.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].pus

JQuery扩展方法实现Form表单与Json互相转换

1.把表单转换出json对象 //把表单转换出json对象 $.fn.toJson = function () { var self = this, json = {}, push_counters = {}, patterns = { "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/, "key": /[a-zA-Z0-9_]+|(?=\[\])/g, "push&qu

layui form表单自定义sm格式

1. 新建以下sm样式,保存为layform_sm.css文件名,然后导入到layui.css的后面. .layui-input-sm,.layui-select-sm,.layui-textarea-sm { width:100px; height:25px; line-height:1; border-width:1px; border-style:solid; background-color:#fff; border-radius:2px; border-color:#e6e6e6; p

easyui form表单提交标准格式

$("#temForm").form('submit', { url: '', queryParams: {}, cache: false, type: 'POST', dataType: 'json', beforeSubmit: function () { return $(this).form('validate'); }, success: function (data, status) { } });

ajax无刷新方式对form表单进行赋值!

/** * 把json数据填充到from表单中 */ <form id="editForm" action="user.php"> 用户名:<input type="text" name="usrname" /><br/> 地址:<input type="text" name="address" /><br/> 性别:<i

[js开源组件开发]query组件,获取url参数和form表单json格式

query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……,最近项目紧,几个小组,只有我一个前端,公司对前端的定位不清晰,导致前端人员过少的情况.所以还得促进公司前端人员增长,不然再这么玩下去,我要被玩死了,一个公司,不可能靠一个资深前端来支撑二三十个开发的需求,这是不现实的,特别是现在的页面不再是复制粘贴的前况下.我默默耕芸,所以这次我整理了这一个月里所有