通过输入字段创建js对象循环

时间:2012-11-10 21:21:16

标签: javascript jquery object multidimensional-array

我有包含更多(动态)换行段的表单,我正在尝试创建可以通过jquery ajax传递并存储在DB中的对象。

问题是如何创建多维对象?

这是我的代码

DB:

  formID              wrapSegmentID           
  pkt                 formID  FK
  hldy                st
                      tt
                      rt

HTML:

<form name="uniqID>                     
  <div name="ws" class="wrapSegment">
    <input name="st">
    <input name="tt">
    <input name="rt">
  </div>
  <div name="ws" class="wrapSegment">
    <input name="st">
    <input name="tt">
    <input name="rt">
  </div>

  <!--it can be more .wrapSegment divs--> 
  <!--it can be more .wrapSegment divs-->
  <!--it can be more .wrapSegment divs-->

<label>
  <input class="hldy" type="checkbox"> hldy
</label>
<label>
  <input class="pkt" type="checkbox"> pkt
</label>
<a class="save">Save</a>
</form> 

JS

$('.hero-unit').on('click','.save', function (){
   var day = {  
         dayID : "id",  
         pkt: "pkt",
         hldy: "hldy",
         ws:  $(".wrapSegment").each(function() {                           
                var inputs = $(this).children(":input");
                var wsObj = $.map(inputs, function(item, y) {
                        return {
                            key: item.name,
                            value: $(item).val()
                        };
                 });            
               return (wsObj);
        })
    };  



 console.log(day); //
 return false;          
});

我得到“ws:parent divs”

console log

但是我希望像这样

Object { dayID="id", pkt=0, hldy=1, ws=[Object { Object { key="1",value="1"}, Object { key=2, value=2}, {Object { key="1",value="1"}, Object { key=2, value=2} ] }

也许是我试图提交表单错误的方式?

1 个答案:

答案 0 :(得分:1)

$.each将返回一个jQuery对象。你想做的是:

$('.hero-unit').on('click','.save', function (){
   var wsObj = [];
   $(".wrapSegment").each(function() {                           
         var inputs = $(this).children(":input");
         var inputArray = $.map(inputs, function(item, y) {
                 return {
                            key: item.name,
                            value: $(item).val()
                        };
                 });      
         wsObj.push(inputArray);      
   });
   var day = {  
         dayID : "id",  
         pkt: "pkt",
         hldy: "hldy",
         ws:  wsObj
    };  

 console.log(day); //
 return false;          
});