2010-10-27 15 views
9

Ich habe eine Tabelle mit mehreren Zeilen, die Formulareingaben enthalten (Kontrollkästchen, Text, Dropdown). Wenn ich auf "Speichern" klicke, kann ich JSON für jede Tabellenzeile erhalten, die in einer AJAX-Anfrage verwendet wird. Jede Reihe hat auf sie eine Kennung, so ich, so etwas bekommen möchte zurück:Eingaben in Tabellenzeilen serialisieren (jQuery)

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

mit diesen Zahlen die ID der Tabellenzeile zu sein.

Jeder Weg, dies zu tun?

+0

Gibt es einen bestimmten Grund, warum Sie es brauchen formatiert? – Calvin

Antwort

21

arbeiten:

so
<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

Vielen Dank .. das war super nützlich für mich .. – user284503

+0

Froh, dass es dir geholfen hat :) – code90

+0

Vielen Dank. Es hat mir auch geholfen. :) – Jijoy

2

nicht getestet, aber so etwas wie dies sollte Dies sollte müssen tun, was Sie

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(); 
    }); 
}); 
Verwandte Themen