比如有如下字段
scholl_name
education
address
修改原有的
比如它的ID是 123
<div>
<input name="old[123][scholl_name]" value="....">
<input name="old[123][education]" value="....">
<input name="old[123][address]" value="....">
<a href="javascript:delete(123)">删除</a>
</div>
新增的
设置一个变量 createdIndex = 0
新增
//createdIndex 使用js输出
<div id="new_createdIndex">
<input name="create[new_createdIndex][scholl_name]" value="">
<input name="create[new_createdIndex][education]" value="">
<input name="create[new_createdIndex][address]" value="">
<a href="javascript:delete('new_createdIndex')">删除</a>
</div>
//每次新增后都累加
createdIndex++;
删除
function delete(id)
{
if (id.indexOf('new_') < 0) //不是新增的, 新增一条删除记录到form
$('<input name="deleted[]" value="'+id+'">').appendTo('#this-form');
//删除本行
$('#' + id).remove();
}
后台处理
$deleted = $_POST['deleted'];
foreach($deleted as $id)
{
数据库删除对应的$id
}
$create = $_POST['create'];
//如果需要排序 可以用sort或rsort
foreach($create as $v)
{
/*
结构是:
$v = [
'school' => 'Your value',
'education' => '...',
'address' => ''
];
*/
insert into table
}
$old = $_POST['old'];
foreach($old as $id => $v)
{
//结构同上
update table set .... where id = $id;
}
这个是最兼容的方式了,如果使用Vue之类的,还可以使用JSON提交,因为vue可以监控到表单是否修改,只用记录已经修改过的表单。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…