<body> <table id="table" border="1" cellpadding="0" cellspacing="0" width="400" height="100"> <tr id="1"><td fd="name">小张</td><td fd="age">19岁</td></tr> <tr id="2"><td fd="name">小李</td><td fd="age">20岁</td></tr> <tr id="3"><td fd="name">小王</td><td fd="age">21岁</td></tr> <tr id="4"><td fd="name">小赵</td><td fd="age">22岁</td></tr> </table> <script type="text/javascript" src="public/xheditor/jquery-1.4.4.min.js"></script> <script> $(document).ready(function(){ $("td").dblclick(function(){ var inval = $(this).html(); //获取选中的值 var inid = $(this).parents().attr("id"); //获取记录的id var infd = $(this).attr("fd"); //获取选中的字段名 $(this).html("<input type='text' id='dian"+inid+infd+"' value='"+inval+"'>");//写入input $("#dian"+inid+infd).focus().live("blur",function(){ var zhi = $(this).val();//获取失去焦点的表单的值 $(this).parents("td").html(zhi); $.post('1.php',{id:inid,fd:infd,val:zhi});//ajax }); }); }); </script> </body>
1. tr标签里面的id是设置的自增id
2. fd也是td的一个属性,可以在里面设置字段名称
3. jquery里面的提到的获取记录的id实际上就是获取自增id
4. 最后的ajax传值post或者get应该都可以,不过我post没测试成功,不知道是不是后台代码的问题,所以用的get
5. js代码如下:
<script> $(document).ready(function(){ $("td").dblclick(function(){ var inval = $(this).html(); //获取选中的值 var inid = $(this).parents().attr("id"); //获取记录的id(相当于自增id) var infd = $(this).attr("fd"); //获取选中的字段名 $(this).html("<input type='text' id='dian"+inid+infd+"' value='"+inval+"'>");//写入input $("#dian"+inid+infd).focus().live("blur",function(){ var zhi = $(this).val();//获取失去焦点的表单的值 $(this).parents("td").html(zhi); //ajax $.get( '__URL__/BluetoothInfoEdit', { id:inid, fd:infd, val:zhi } ); }); }); }); </script>
后台代码:
//信息修改 public function BluetoothInfoEdit(){ $id = $_GET['id'];//ID值 $fd = $_GET['fd'];//字段名字 $val = $_GET['val'];//值 $data[$fd] = $val; $model = M('bluetooth_upgrade'); $model->where('id='.$id)->save($data); }
这样就可以了
注意那个$data[$fd] = $val
这句话是重点
以及save那句话的where条件也是重点,测试post的时候可能就是没有写where的原因才导致的失败!