jQuery序列化表单与数组

时间:2013-11-18 11:02:27

标签: jquery serialization

我有一些带有

等输入的动态表单
<input type="text" name="admins[0]['email']">
<input type="text" name="admins[1]['email']">
<input type="text" name="admins[2]['email']">

等等。当我在其上.serializeArray();时,它们被视为分开的不同名称。我希望输出

admins
|
-->0
|  \-->email => value
-->1
|  \-->email => value
-->2
   \-->email => value

所以“管理员”将是单一阵列。可能吗? (我用ajax发送数据)

2 个答案:

答案 0 :(得分:1)

简单方法

var serializedArray = {};
$( "input, textarea" ).each( function( i, el ){
  var $field = $( this )
    , rawName = $field.attr( "name" )
    , matches = rawName.match( /^(.+?)\[\d+\]\['(.+)'\]$/ )
    , key
    , subKey
    , value = $field.val()
    , subValue = {]}
    ;

  if( matches ){

    if( !( key in serializedArray ) ){
      serializedArray[key] = [];
    }

    subValue[subKey] = value;
    serializedArray[key].push(subValue);

  } else {
    serializedArray[rawName] = value;

  }
});

答案 1 :(得分:0)

您可以使用startsWith的{​​{1}}语法。

jQuery

Jquery startsWith selector

Jquery each info