2010-10-27 30 views
9

我有與包含形式輸入(複選框,文本,下拉菜單)中的多個行的表。當我點擊保存時,我希望能夠獲取表示將在AJAX請求中使用的每個錶行的JSON。每行都有一個ID,所以我想回來這樣的事情:在表中的行(jQuery的)序列化輸入

[1: { "input_name":"input_value", "input_name":"input_value", etc...}, 2: {etc...}] 

這些數字是錶行的id。

任何方式來做到這一點?

+0

有你爲什麼需要它格式化這樣一個具體的原因是什麼? – Calvin 2010-10-27 14:14:32

回答

21

這應該做你需要的東西:

<table> 
    <tr id="101"> 
     <td><input type="text" name="f1" value="" /></td> 
     <td><input type="checkbox" name="f2" value="v2" /></td> 
     <td><input type="checkbox" name="f3" value="" /></td> 
     <td><select name="f4"> 
       <option>1</option> 
       <option>2</option> 
       <option>3</option> 
      </select></td> 
    </tr> 
    <tr id="102"> 
     <td><input type="text" name="f1" value="" /></td> 
     <td><input type="checkbox" name="f2" value="v2" /></td> 
     <td><input type="checkbox" name="f3" value="" /></td> 
     <td><select name="f4"> 
       <option>1</option> 
       <option>2</option> 
       <option>3</option> 
      </select></td> 
    </tr> 
    <tr id="103"> 
     <td><input type="text" name="f1" value="" /></td> 
     <td><input type="checkbox" name="f2" value="v2" /></td> 
     <td><input type="checkbox" name="f3" value="" /></td> 
     <td><select name="f4"> 
       <option>1</option> 
       <option>2</option> 
       <option>3</option> 
      </select></td> 
    </tr> 

</table> 
<button id="btnGo">Go</button> 
<script type="text/javascript"> 
    $('#btnGo').click(function(){ 
     var data={}; 
     $('table').find('tr').each(function(){ 
      var id=$(this).attr('id'); 
      var row={}; 
      $(this).find('input,select,textarea').each(function(){ 
       row[$(this).attr('name')]=$(this).val(); 
      }); 
      data[id]=row; 
     }); 
     console.log(data); 
    }); 
</script> 
+0

非常感謝..這對我來說非常有用.. – user284503 2011-05-10 23:15:21

+0

很高興幫助你:) – code90 2011-05-12 09:57:35

+0

非常感謝。它也幫助了我。 :) – Jijoy 2011-07-22 16:13:40

2

沒有測試過,但是這樣的事情應該工作

var myjson = new Object(); 
$("#tableid > tr").each(function() { 
    var tablerow = $(this); 
    $("td input", tablerow).each(function() { 
    var input = $(this); 
    myjson[tablerow.attr("id")][input.attr("name")] = input.val(); 
    }); 
}); 
相關問題