Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sammy.form_2_json-latest.min.js 3.0KB

12345
  1. // -- Sammy.js -- /plugins/sammy.form_2_json.js
  2. // http://sammyjs.org
  3. // Version: 0.7.6
  4. // Built: 2014-08-26 10:45:31 +0300
  5. (function(factory){if(typeof define==="function"&&define.amd){define(["jquery","sammy"],factory)}else{(window.Sammy=window.Sammy||{}).Form2JSON=factory(window.jQuery,window.Sammy)}})(function($,Sammy){(function(){window.form2object=function(rootNode,delimiter,skipEmpty){if(typeof skipEmpty=="undefined"||skipEmpty==null)skipEmpty=true;if(typeof delimiter=="undefined"||delimiter==null)delimiter=".";rootNode=typeof rootNode=="string"?document.getElementById(rootNode):rootNode;var formValues=getFormValues(rootNode);var result={};var arrays={};for(var i=0;i<formValues.length;i++){var value=formValues[i].value;if(skipEmpty&&value==="")continue;var name=formValues[i].name;var nameParts=name.split(delimiter);var currResult=result;var arrayKey="";for(var j=0;j<nameParts.length;j++){var namePart=nameParts[j];var arrName="";if(namePart.indexOf("[]")>-1&&j==nameParts.length-1){arrayKey=arrName=namePart.substr(0,namePart.indexOf("["));if(!currResult[arrName])currResult[arrName]=[];currResult[arrName].push(value)}else{if(namePart.indexOf("[")>-1){arrName=namePart.substr(0,namePart.indexOf("["));var arrIdx=namePart.replace(/^[a-z]+\[|\]$/gi,"");arrayKey=arrayKey+arrName+arrIdx;if(!arrays[arrayKey])arrays[arrayKey]={};if(!currResult[arrName])currResult[arrName]=[];if(j==nameParts.length-1){currResult[arrName].push(value)}else{if(!arrays[arrayKey][arrIdx]){currResult[arrName].push({});arrays[arrayKey][arrIdx]=currResult[arrName][currResult[arrName].length-1]}}currResult=arrays[arrayKey][arrIdx]}else{if(j<nameParts.length-1){if(!currResult[namePart])currResult[namePart]={};currResult=currResult[namePart]}else{currResult[namePart]=value}}}}}return result};function getFormValues(rootNode){var result=[];var currentNode=rootNode.firstChild;while(currentNode){if(currentNode.nodeName.match(/INPUT|SELECT|TEXTAREA/i)){var fieldValue=getFieldValue(currentNode);if(fieldValue!==null)result.push({name:currentNode.name,value:fieldValue})}else{var subresult=getFormValues(currentNode);result=result.concat(subresult)}currentNode=currentNode.nextSibling}return result}function getFieldValue(fieldNode){switch(fieldNode.nodeName){case"INPUT":case"TEXTAREA":switch(fieldNode.type.toLowerCase()){case"radio":case"checkbox":if(fieldNode.checked)return fieldNode.value;break;case"button":case"reset":case"submit":case"image":return"";break;default:return fieldNode.value;break}break;case"SELECT":return getSelectedOptionValue(fieldNode);break;default:break}return null}function getSelectedOptionValue(selectNode){var multiple=selectNode.multiple;if(!multiple)return selectNode.value;var result=[];for(var options=selectNode.getElementsByTagName("option"),i=0,l=options.length;i<l;i++){if(options[i].selected)result.push(options[i].value)}return result}window.form2json=window.form2object})();Sammy.Form2JSON=function(app){app._parseFormParams=function(form){return form2object(form[0])}};return Sammy.Form2JSON});