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 相关文章推荐
如何在一个页面显示多个百度地图
Apr 07 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
快速入门Vue
Dec 19 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 Javascript
JavaScript ES6的函数拓展
Jan 18 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
在Debian系统下配置LNMP的教程
2015/07/09 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
document.documentElement和document.body区别介绍
2013/09/16 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python制作一个桌面便签软件
2015/08/09 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python DataFrame 取差集实例
2019/01/30 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
python实现可逆简单的加密算法
2019/03/22 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python怎么对数字进行过滤
2020/07/05 Python
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
大学生的创业计划书就该这么写
2014/01/30 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
公司捐书倡议书
2015/04/27 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
Java基于字符界面的简易收银台
2021/06/26 Java/Android