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 相关文章推荐
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
jQuery拖动图片删除示例
May 10 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
JavaScript中string对象
Jun 12 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
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
桌面中心(四)数据显示
2006/10/09 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
关于学习的演讲稿
2014/05/10 职场文书
学生会个人总结范文
2015/02/15 职场文书
2015大学生求职信范文
2015/03/20 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
关于的python五子棋的算法
2022/05/02 Python