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 相关文章推荐
点击文章内容处弹出页面代码
Oct 01 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Jun 02 Javascript
Vue.js自定义指令的用法与实例解析
Jan 18 Javascript
基于JavaScript实现的希尔排序算法分析
Apr 14 Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 Javascript
详解node+express+ejs+bootstrap构建项目
Sep 27 Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 Javascript
layer.confirm取消按钮绑定事件的方法
Aug 17 Javascript
微信小程序左滑删除功能开发案例详解
Nov 12 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP可逆加密/解密函数分享
2012/09/25 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
jQuery解析json格式数据示例
2018/09/01 jQuery
angularjs性能优化的方法
2018/09/05 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
浅析python参数的知识点
2018/12/10 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
试用期转正后的自我评价
2014/09/21 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
nginx静态资源的服务器配置方法
2022/07/07 Servers