JS实现双击内容变为可编辑状态


Posted in Javascript onMarch 03, 2017

在一些网站上我们经常看到交互性很强的功能。一些用户资料可以直接双击出现文本框,并在此输入新的资料即可修改,无需再按确定按钮等。。

我在网上查了很多资料,但都有一个小bug,就是当获取焦点后,光标的位置在文本框内容是开始处,这样编辑时还需要用户再重新选择一下光标位置,这样的交互感觉不好;后来查到新的资料解决了此问题,希望可以帮助到更多的人。

代码部分:

注意:设置选择文本的内容或设置光标位置

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>JS实现双击编辑可修改状态</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<script type="text/javascript">
  function ShowElement(element) {
    var oldhtml = element.innerHTML;
    //创建新的input元素
    var newobj = document.createElement('input');
    //为新增元素添加类型
    newobj.type = 'text';
    //为新增元素添加value值
    newobj.value = oldhtml;
    //为新增元素添加光标离开事件
    newobj.onblur = function() {
      element.innerHTML = this.value == oldhtml ? oldhtml : this.value;
      //当触发时判断新增元素值是否为空,为空则不修改,并返回原有值 
    }
    //设置该标签的子节点为空
    element.innerHTML = '';
    //添加该标签的子节点,input对象
    element.appendChild(newobj);
    //设置选择文本的内容或设置光标位置(两个参数:start,end;start为开始位置,end为结束位置;如果开始位置和结束位置相同则就是光标位置)
    newobj.setSelectionRange(0, oldhtml.length);
    //设置获得光标
    newobj.focus();
  }
</script>
</head>
<body>
  <dl>
    <dt>你的用户名:</dt>
    <dd ondblclick="ShowElement(this)">三人行</dd>
    <dt>你的个性档</dt>
    <dd ondblclick="ShowElement(this)">三人行,必有我师焉!</dd>
  </dl>
</body>
</html>

双击事件:ondblclick

以上所述是小编给大家介绍的JS实现双击内容变为可编辑状态,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Div自动滚动到末尾的代码
Oct 26 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
详解vue.js下引入百度地图jsApi的两种方法
Jul 27 Javascript
原生JS实现列表内容自动向上滚动效果
May 22 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
Jul 31 Javascript
jquery表单验证实例仿Toast提示效果
Mar 03 #Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 #Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 #Javascript
angularjs实现下拉列表的选中事件示例
Mar 03 #Javascript
JavaScript数组迭代方法
Mar 03 #Javascript
vue.js的提示组件
Mar 02 #Javascript
js实现功能比较全面的全选和多选
Mar 02 #Javascript
You might like
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php实现插入排序
2015/03/29 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
使用PHP开发留言板功能
2019/11/19 PHP
dojo 之基础篇(二)之从服务器读取数据
2007/03/24 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python中生成Epoch的方法
2017/04/26 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
CLR与IL分别是什么含义
2016/08/23 面试题
国际商务专业求职信
2014/07/15 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL