apzl_leasing/WebContent/js/tracywindy/tracywindySerializeFormToJsonObject.js
2018-06-03 22:26:41 +08:00

111 lines
4.2 KiB
JavaScript

/**
* @author tracywindy
*
*/
(function($) {
$.fn.recusionAllChildrenNodesParams = function(parentDom, params) {
var allChildrenNodes = parentDom.childNodes;
var allChildrenNodesLen = allChildrenNodes.length;
if (allChildrenNodesLen > 0) {
for (var i = 0; i < allChildrenNodesLen; i++) {
var childNode = allChildrenNodes[i];
var nodeTagName = childNode.tagName;
if (!nodeTagName) {
continue;
}
switch (nodeTagName.toUpperCase()) {
case "SELECT":
case "TEXTAREA":
{
this.setParamByDom(childNode, params);
break;
}
default:
{
this.recusionAllChildrenNodesParams(childNode, params);
}
}
}
} else {
this.setParamByDom(parentDom, params);
}
};
$.fn.setParamByDom = function(domNode, domArr) {
var paramName = domNode.name;
var paramValue = domNode.value;
if (paramName && ("undefined" != typeof(paramValue))) {
domArr.push(domNode);
}
};
$.fn.extend({
tracywindySerializeFormToJsonObject: function(allownNull, isEmitDot, encode) {
/*if(this.length>1){
return false;
} */
//var arr=this.serializeArray();
var domObj = this[0];
var arr = [];
if ("FORM" == domObj.tagName) {
arr = domObj.elements;
} else {
this.recusionAllChildrenNodesParams(domObj, arr);
}
var obj = new Object();
//modify by tracywindy 2013-10-10 start
var objArr = new Object();
//modify by tracywindy 2013-10-10 end
$.each(arr, function(k, v) {
var name = v.name;
var value = v.value;
//modify by tracywindy 2013-10-10 start
objArr[name] = objArr[name] || [];
if (("INPUT" == v.tagName) && (("RADIO" == (v.getAttribute("type") || "").toUpperCase()) || ("CHECKBOX" == (v.getAttribute("type") || "").toUpperCase()))) {
if (v.checked) {
objArr[name].push(value);
}
} else {
objArr[name].push(value);
}
var realValue = objArr[name].join(",");
value = realValue;
//modify by tracywindy 2013-10-10 end
if (encode) {
value = escape(encodeURIComponent(value));
}
if (!name) return;
if (!allownNull && ((null == value) || ('undefined' == typeof(value)) || ('' == value))) return;
var currentObj = {};
if ((name.indexOf(".") > -1) && (!isEmitDot)) {
var names = name.split(".");
var len = names.length;
for (var i = 0; i < len; i++) {
var attrName = names[i];
if (0 == i) {
if (!obj[attrName]) {
obj[attrName] = {};
}
currentObj = obj[attrName];
} else if ((len - 1) == i) {
currentObj[attrName] = value;
} else {
if (!currentObj[attrName]) {
currentObj[attrName] = {};
}
currentObj = currentObj[attrName];
}
}
} else {
obj[name] = value;
//modify by tracywindy 2013-10-10 end
//obj[v.name]= v.value;
if (encode) {
//obj[v.name] = escape(encodeURIComponent(v.value));
obj[name] = escape(encodeURIComponent(value));
}
}
});
return obj;
}
});
})(jQuery);