如何像
<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
即使你解决这个问题,你仍然会结束'