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 API学Jquery 之二 属性
Apr 09 Javascript
Javascript的一种模块模式
Sep 08 Javascript
js中获取事件对象的方法小结
Mar 13 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
微信小程序手势操作之单触摸点与多触摸点
Mar 10 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
小程序click-scroll组件设计
Jun 18 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
Sep 18 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 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学习之PHP运算符
2006/10/09 PHP
phpize的深入理解
2013/06/03 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
jQuery的三种$()
2009/12/30 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
python的id()函数介绍
2013/02/10 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
Python实现进程同步和通信的方法
2018/01/02 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
numpy 声明空数组详解
2019/12/05 Python
python如何安装下载后的模块
2020/07/03 Python
Python 创建TCP服务器的方法
2020/07/28 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
会计岗位职责范本
2014/03/07 职场文书
工厂搬迁方案
2014/05/11 职场文书
计划生育宣传标语
2014/06/21 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
人民币符号
2022/02/17 杂记