将表单转换为SearializeObject

时间:2014-03-25 07:01:07

标签: jquery arrays

我需要从键中生成数组。

在下面的字段中,模式返回键名称字段,行,""。

如何生成多维数组并保存值?

 var fixed = [], 
 var pattern = { key: /[a-z0-9_-]+|(?=\[\])/gi }
 var field = { name: "name-field1[row1][]",value :"10" }
 var keys = field .name.match(patterns.key), k;
 //returns name-field, row, ""
 while ((k = keys.pop()) !== undefined) {
 if(fixed[key] === undefined) {
    fixed[key] == []
 }                       
  var obj = []
  obj[k] = pair.value;      
  fixed[key] = obj;// I am doing wrong saving in the "row" key I need save in "col"
 }

输出:

{name-field:row1 {[10,20,30],row2:[20,30,40]}}

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题。

我需要将表单转换为对象。

以下是将表单序列化为对象的code的链接

var push_obj = [];
if (patterns.push.test(keys[(keys.length - 1)])) {
    $(keys).each(function(i,val) {
        if(i == (keys.length - 1)) return false;
        if(jQuery.inArray( val, keys ) == 0 ) {
            if(named[val] === undefined) {
                return false;
            }
            push_obj = named[val];
        } else {
            if(push_obj[val] === undefined) {
                push_obj = [];
                return false;
            } else {
                push_obj = push_obj[val];
            }
        }
    });
}
keys.reverse();
$(keys).each(function(i,val) {
    if(patterns.fixed.test(val)){
        var obj = [];
    } else {
        var obj = {};
    }

    if(jQuery.inArray( val, keys ) == 0 ) {
        if (patterns.push.test(val)) {
            push_obj.push(pair.value)
            obj = push_obj;
        } else {
            obj[val] = pair.value;
        }
    } else {
        obj[val] = prevObj;

    }

    if(jQuery.inArray( val, keys ) == (keys.length - 1)) {

         named = $.extend(true, named, obj);

    }               
    prevObj = obj
});