2010-11-17 75 views

回答

1

當然可以看這裏:

// This assumes that you've wrapped the form #myform around the input 
$('#myform').submit(function() { 
    $('#mytable tr').each(function(n, elem) { 
     $('td', elem).each(function(m) { 
      $('input:text, input:radio, textarea, select') 
       .attr('name', 'data['+n+']['+m+']'); 
     }); 
    }); 

    // Do some validation or just let it submit :D 
}); 

在這裏你去!

+0

不錯!我會嘗試這種方法 – 2010-11-17 16:36:17

+0

工作很好。一個評論:需要範圍最內層的選擇器:$('input:text,input:radio,textarea,select',tdElem) – 2010-11-17 19:22:47

+0

你是對的,那不知何故迷路了:P – aefxx 2010-11-17 20:55:47

0

假設你有一個y列和x行的表。您可以使用nth-childgt選擇器簡單地獲取每個單元格中的單元格數據。例如,爲了選擇第一列的單元格(exluding的「標頭」小區)可以這樣做:

$("#tableId td:gt(0):nth-child(1)").css("color", "red"); 

所以從可以做這樣的事情每個小區抓住形式的元素值,利用.map

var values = $("#tableId td:gt(0):nth-child(1) :input").map(function() { 
    return this.value; 
}).get(); 
alert(values); 

演示:http://jsfiddle.net/Nunhk/3/

1
當然jQuery的魔法

可以用!僅舉你的細胞它們是什麼,包括一個隱藏字段的ID,例如:

<tr> 
    <td class="firstname"><input /></td> 
    <td class="lastname"><input /></td> 
    <td class="address"><input /></td> 
    <td class="phone"><input /></td> 
    ... 
    <td class="whatever"> 
     <input /> 
     <input type="hidden" class="itemId" value="[the id]" /> 
    </td> 
</tr> 

當你想更新某行,通過執行類似

var row = $('tr').find('.itemId[value=' + id + ']'); 
// if you're in an event handler: 
var id = $(this).parents('tr').find('.itemId').val(); //gets you the id you want 

現在搶行你可以做這樣的事情:

var firstname = row.find('.firstname :input').val(); //etc.. 

它們編譯成一個JSON對象:

var data = {"itemId": id, "firstname": firstname, "lastname": lastname, ...etc }; 

並通過$.post(),$.ajax()$.get()提交。簡單!

+0

謝謝你的回答。但是,我將如何處理動態添加的列?這些新單元格中的字段將如何命名? – 2010-11-17 16:34:54

+0

無論你想命名他們。當你創造它們時,你知道它們是什麼,即使它們是動態的,對吧?人們不只是創建隨機動態數據... – Jason 2010-11-17 20:21:52

相關問題