如何像
<form …>
<table>
<thead>
<tr>
<th>col1</th><th>col2</th><th>col3</th>
</tr>
<tr id="editrow" style="display:none">
<td><input type="text"></td>
<td><input type="text"></td>
<td>
<select>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
</td>
</tr>
</thead>
<tbody>
<tr><td>col1</td><td>col2</td><td data-value="1">one</td></tr>
<tr><td>col1</td><td>col2</td><td data-value="2">two</td></tr>
<tr><td>col1</td><td>col2</td><td data-value="3">three</td></tr>
<tr><td>col1</td><td>col2</td><td data-value="1">one</td></tr>
<tr><td>col1</td><td>col2</td><td data-value="2">two</td></tr>
<tr><td>col1</td><td>col2</td><td data-value="3">three</td></tr>
</tbody>
</table>
</form>
綁定一個click事件處理程序tbody > tr > td
在其中
- 隱藏
<tr>
- 從
<td>
和data-value
拉數據屬性來填充輸入元素#editrow
- if #editrow is in
<tbody>
顯示其前述<tr>
- 插入
#editrow
的<tr>
後並使其可見
.focus()
,進行了點擊事件
- 使內
#editrow
確信更改在您的<tr>
的<td>
更新<td>
的輸入元素因此(你應該爲此使用委託事件。那麼你只需要創建和綁定處理一次)
綁定一個提交事件處理程序<form>
在其中
- 穿行
tbody > tr
建立一個映射數據(JavaScript對象...)
- 防止形式從
.preventDefault()
- 發送提交你在(1)使用jQuery.ajax
內置的數據地圖3210
或者您爲您的<td>
創建<input>
s,並自然提交表單。通過ajax構建地圖併發送它並不那麼痛苦,因爲您不需要操作數百個DOM元素。
如果沒有javascript,此解決方案將無法正常工作。如果它必須沒有工作,那麼你將不會在數百個不斷重複的<select>
s中淹沒你的DOM。
服務器端語言是你的朋友。 – zzzzBov 2012-03-01 17:31:31
這太模糊了,沒有一個正確的放在一起的問題...編輯帖子與一些HTML與更具體的問題描述 – charlietfl 2012-03-01 17:32:06
即使你解決這個問題,你仍然會結束'