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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
jquery实现简单的瀑布流布局
Dec 11 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
微信小程序下拉框功能的实例代码
Nov 06 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
Aug 07 Javascript
jenkins自动构建发布vue项目的方法步骤
Jan 04 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
php下将XML转换为数组
2010/01/01 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
javascript some()函数用法详解
2014/11/13 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python写的一个简单监控系统
2015/06/19 Python
解决Python传递中文参数的问题
2015/08/04 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Tesserocr库的正确安装方式
2018/10/19 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
模具专业推荐信
2013/10/30 职场文书
单位成立周年感言
2014/01/26 职场文书
医院工作检讨书范文
2014/02/10 职场文书
社团活动总结书
2014/06/27 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
鸟的天堂导游词
2015/01/31 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书