要实现一个功能就是在我们的网页展示的表格数据中点击某条数据就变成表单文本框可以修改内容,修改完成后还变回原来的普通文本:下面是效果展示图以及实现过程和代码:
1.效果展示图:单击时候改变样式,修改完成样式变回原来的

2.该功能主要是在html页面中使用javascript来实现,首先需要给该条数据添加一个单击事件,this代表当前标签,代码是:
<td><span onclick="changename(this)">张三</span></td>
3.下面是该单击事件指向的方法内容在script中来完成:
3.1先获得点击的标签中的值储存在name中,然后清空原先的普通文本标签数据
3.2然后在这个标签的父标签里面添加一个input表单标签用来修改数据,这就需要把刚才得到的数据给到这个input标签的value属性,并且给input标签添加一个失焦事件用来做修改内容提交以及变回原来的普通文本标签操作
3.3给input标签添加一个主动触发事件让input标签自己主动获得焦点
3.4删掉原来的普通文本标签
3.5修改完成后还要完成一个功能就是把修改的内容异步提交到数据库中,并且文本框变回原来的样式,这些操作在input的失焦事件的方法中完成
3.6首先可以判断表单中的值是否改变,不改变就不需要提交异步操作,如果改变了就提交异步请求修改数据库中的数据,ajax的异步请求这里就不多演示,可以看我的另外一篇文章是完成异步请求的功能,点击查看:异步请求的实现过程
3.7最后就是在父标签中添加原来的普通文本标签并且赋值,再删掉input文本框就可以了
<script type="text/javascript">
function changename(s){
var name = $(s).html();
$(s).html("");
$(s).parent().append("<input value='"+name+"'/>");
$(s).parent().children("input").attr("onblur","nameblur(this,'"+name+"')");
$(s).parent().children("input").focus();
$(s).remove();
}
function nameblur(inp,name){
var val = $(inp).val();
if(val != name){
alert("这里是发送异步请求,修改数据库操作");
}
$(inp).parent().append("<span onclick='changename(this)'>"+val+"</span>");
$(inp).remove();
}
</script>