2010-11-17 73 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

相关问题