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 相关文章推荐
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
javascript简单事件处理和with用法介绍
Sep 16 Javascript
让alert不出现弹窗的两种方法
May 18 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
Oct 10 Javascript
原生javascript获取元素样式
Dec 31 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
js实现文字截断功能
Sep 14 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
详解Angular 4.x 动态创建组件
Apr 25 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 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
第二节 对象模型 [2]
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
AJax面试题
2014/11/25 面试题
《植物妈妈有办法》教学反思
2016/02/23 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python