forked from Aleksandr-ru/serializeObject
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.serializeObject.min.js
6 lines (6 loc) · 1.63 KB
/
jquery.serializeObject.min.js
1
2
3
4
5
6
/**
* jQuery serializeObject
* @author Aleksandr.ru
* @link https://github.com/Aleksandr-ru/serializeObject
*/
(function(a){if(window.File&&window.FileReader&&window.FileList&&a.Deferred){a.fn.serializeObject=function(){var b=a(this);return a.when().then(function(){var d=new a.Deferred();var c=b.find(":input[name]").not(":checkbox").serializeArray();b.find(":checkbox[name]").each(function(){if(this.hasAttribute("value")){c.push({name:this.name,value:this.value})}else{c.push({name:this.name,value:this.checked})}});d.resolve(c);return d.promise()}).then(function(c){var f=new a.Deferred();var e=[],d=[];b.find('input[type="file"][name]').each(function(){var h=a(this).get(0);for(var j=0;j<h.files.length;j++){e.push(new a.Deferred());d.push(new FileReader());var g=e.length-1;d[g].onload=(function(k,l,i){return function(n){var o=n.target.result;var p=o.indexOf(",")+1;var m={name:k.name,type:k.type,size:k.size,data:p?o.slice(p):null};l.resolve({name:i,value:m})}})(h.files[j],e[g],h.name);d[g].onerror=(function(i){return function(k){i.reject(k.target.error)}})(e[g]);d[g].readAsDataURL(h.files[j])}});a.when.apply(a,e).then(function(){if(arguments[0]){for(var g=0;g<arguments.length;g++){c.push(arguments[g])}}f.resolve(c)},function(g){f.reject(g)});return f.promise()}).then(function(c){var e=new a.Deferred();var d={};a.each(c,function(){var f=this.value===undefined?"":this.value;if(this.name.slice(-2)==="[]"){this.name=this.name.slice(0,-2);if(d[this.name]===undefined){d[this.name]=[]}}if(d[this.name]!==undefined){if(!d[this.name].push){d[this.name]=[d[this.name]]}d[this.name].push(f)}else{d[this.name]=f}});e.resolve(d);return e.promise()})}}})(jQuery);