每个单元格都有一些字段,文本输入,单选按钮或选择。如何在ajax中发布包含可动态添加行和列的动态表中的字段的表单
我被迫以这种方式命名字段,以便名称体现行和列索引?像“data [row] [col]”一样的 ? 当向表中添加行或列时动态创建这些字段名是一种麻烦..
jQuery魔术可以在这里使用吗?
每个单元格都有一些字段,文本输入,单选按钮或选择。如何在ajax中发布包含可动态添加行和列的动态表中的字段的表单
我被迫以这种方式命名字段,以便名称体现行和列索引?像“data [row] [col]”一样的 ? 当向表中添加行或列时动态创建这些字段名是一种麻烦..
jQuery魔术可以在这里使用吗?
当然可以看这里:
// 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
});
在这里你去!
可以用!仅举你的细胞它们是什么,包括一个隐藏字段的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()
提交。简单!
谢谢你的回答。但是,我将如何处理动态添加的列?这些新单元格中的字段将如何命名? – 2010-11-17 16:34:54
无论你想命名他们。当你创造它们时,你知道它们是什么,即使它们是动态的,对吧?人们不只是创建随机动态数据... – Jason 2010-11-17 20:21:52
不错!我会尝试这种方法 – 2010-11-17 16:36:17
工作很好。一个评论:需要范围最内层的选择器:$('input:text,input:radio,textarea,select',tdElem) – 2010-11-17 19:22:47
你是对的,那不知何故迷路了:P – aefxx 2010-11-17 20:55:47