每個單元格都有一些字段,文本輸入,單選按鈕或選擇。如何在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