类似于资料修改并且保存的操作

前几天遇到有人问想做一个修改和保存资料的效果 于是想了想 研究了下

想到了三种实现方式  当然用户体验有待研究。。由于刚开始写博客 语言组织和代码都比较差 欢迎大家指正 

1、类似于QQ的资料修改(本来就是input输入框先隐藏边框  鼠标移动上去出现边框 得到焦点时 可以编辑 失去焦点时保存)

如下图 这个就不说啦 太简单了

代码如下

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>这里主要写思路 布局就没那么细啦</title>
<style type="text/css">
*{  font-size:30px;}
span{  vertical-align:middle}
input{ border:1px solid #FFF; solid line-height:12px;}
input:hover{border:1px solid #000;}
</style>
</head>
<body>
<span>请输入名称:</span><input value="星米"/>

</body>
</html>

2.文本在页面上保存时用文本标签包裹,当点击修改时在对于的文本后面插入input  并且把标签innerHTML赋给input的value

代码如下

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>代码二</title>
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
function edit(obj){
	obj=$(obj).parent().parent();
	obj.children('li:not(:last)').find("span").each(function(){
	var self=$(this);
	self.html('<input type="text" value="'+self.html()+'" class="ipt" />');
	});
	obj.children('li:last').html('<a href="#" onclick="save(this)">保存</a>');
	obj=null;
}
function save(obj){
	obj=$(obj).parent().parent();
	obj.children('li:not(:last)').find("span").each(function(){
	var self=$(this);
	self.html(self.children('input[class="ipt"]').val());
	});
	obj.children('li:last').html('<a href="#" onclick="edit(this)">更改</a>');
	obj=null;
}
</script>
</head>
<body>

<ul>
	<li><span>姓名</span><span>姓名</span><span>姓名</span></li>
	<li><span>AAAAAAAA</span><span>bbbbbbbb</span></li>
	<li><a href="#" onclick="edit(this)">更改</a></li>
</ul>

</body>
</html>

3、利用input的readyonly属性来控制为只读 当点击修改时移除掉readyonly 属性

代码如下

<!DOCTYPE html>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>代码三</title>
<style type="text/css">
input{ float:left;}
p{ float:left;margin:5px; padding:0 5px; background:#555;cursor:pointer;}
p span{ display:block; 100%; height:100%}
</style>

</head>
<input id="setText" value="15647"/>
<p id="edit">修改</p>
<p id="save">保存</p>
<script>
setText.readOnly = true;
edit.onclick = function(){
	setText.readOnly = false;
	setText.focus();
}
var save = document.getElementById("save");
save.onclick = function(){
	setText.readOnly = true;
	setText.blur();
}
</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/xingmi/p/2530720.html