Вход Регистрация
Файл: html/javascript/jquery.serialize-object.js
Строк: 95
<?php
(function(rootfactory) {

  
// AMD
  
if (typeof define === "function" && define.amd) {
    
define(["exports""jquery"], function(exports, $) {
      return 
factory(exports, $);
    });
  }

  
// CommonJS
  
else if (typeof exports !== "undefined") {
    var $ = require(
"jquery");
    
factory(exports, $);
  }

  
// Browser
  
else {
    
factory(root, (root.jQuery || root.Zepto || root.ender || root.$));
  }

}(
this, function(exports, $) {

  var 
patterns = {
    
validate: /^[a-z_][a-z0-9_]*(?:[(?:d*|[a-z0-9_]+)])*$/i,
    
key:      /[a-z0-9_]+|(?=[])/gi,
    
push:     /^$/,
    
fixed:    /^d+$/,
    
named:    /^[a-z0-9_]+$/i
  
};

  function 
FormSerializer(helper$form) {

    
// private variables
    
var data     = {},
        
pushes   = {};

    
// private API
    
function build(basekeyvalue) {
      
base[key] = value;
      return 
base;
    }

    function 
makeObject(rootvalue) {

      var 
keys root.match(patterns.key), k;

      
// nest, nest, ..., nest
      
while ((keys.pop()) !== undefined) {
        
// foo[]
        
if (patterns.push.test(k)) {
          var 
idx incrementPush(root.replace(/[]$/, ''));
          
value build([], idxvalue);
        }

        
// foo[n]
        
else if (patterns.fixed.test(k)) {
          
value build([], kvalue);
        }

        
// foo; foo[bar]
        
else if (patterns.named.test(k)) {
          
value build({}, kvalue);
        }
      }

      return 
value;
    }

    function 
incrementPush(key) {
      if (
pushes[key] === undefined) {
        
pushes[key] = 0;
      }
      return 
pushes[key]++;
    }

    function 
encode(pair) {
      switch ($(
'[name="' pair.name '"]'$form).attr("type")) {
        case 
"checkbox":
          return 
pair.value === "on" true pair.value;
        default:
          return 
pair.value;
      }
    }

    function 
addPair(pair) {
      if (!
patterns.validate.test(pair.name)) return this;
      var 
obj makeObject(pair.nameencode(pair));
      
data helper.extend(truedataobj);
      return 
this;
    }

    function 
addPairs(pairs) {
      if (!
helper.isArray(pairs)) {
        throw new 
Error("formSerializer.addPairs expects an Array");
      }
      for (var 
i=0len=pairs.lengthi<leni++) {
        
this.addPair(pairs[i]);
      }
      return 
this;
    }

    function 
serialize() {
      return 
data;
    }

    function 
serializeJSON() {
      return 
JSON.stringify(serialize());
    }

    
// public API
    
this.addPair addPair;
    
this.addPairs addPairs;
    
this.serialize serialize;
    
this.serializeJSON serializeJSON;
  }

  
FormSerializer.patterns patterns;

  
FormSerializer.serializeObject = function serializeObject() {
    return new 
FormSerializer($, this).
      
addPairs(this.serializeArray()).
      
serialize();
  };

  
FormSerializer.serializeJSON = function serializeJSON() {
    return new 
FormSerializer($, this).
      
addPairs(this.serializeArray()).
      
serializeJSON();
  };

  if (
typeof $.fn !== "undefined") {
    $.
fn.serializeObject FormSerializer.serializeObject;
    $.
fn.serializeJSON   FormSerializer.serializeJSON;
  }

  
exports.FormSerializer FormSerializer;

  return 
FormSerializer;
}));
?>
Онлайн: 0
Реклама