JS实现双击编辑可修改

需求描述:在一段文字处双击可以进行修改,也就是双击后创建输入框,输入内容,在输入框失去焦点后将输入的内容再以文字的形式显示出来,以下是html代码:

1 <fieldset>
2         <legend>双击用户名进行编辑</legend>
3         <dl>
4             <dt>你的用户名:</dt>
5             <dd ondblclick="ShowElement(this)">诸葛亮</dd>
6         </dl>
7     </fieldset>

以下是摘录的JavaScript代码:

 1 <script type="text/javascript">
 2         function ShowElement(element) {
 3             var oldhtml = element.innerHTML;
 4             //创建新的input元素
 5             var newobj = document.createElement(‘input‘);
 6             //为新增元素添加类型
 7             newobj.type = ‘text‘;
 8             //为新增元素添加value值
 9             newobj.value = oldhtml;
10             //为新增元素添加光标离开事件
11             newobj.onblur = function() {
12                 element.innerHTML = this.value == oldhtml ? oldhtml : this.value;
13                 //当触发时判断新增元素值是否为空,为空则不修改,并返回原有值
14             }
15             //设置该标签的子节点为空
16             element.innerHTML = ‘‘;
17             //添加该标签的子节点,input对象
18             element.appendChild(newobj);
19             //设置选择文本的内容或设置光标位置(两个参数:start,end;start为开始位置,end为结束位置;如果开始位置和结束位置相同则就是光标位置)
20             newobj.setSelectionRange(0, oldhtml.length);
21             //设置获得光标
22             newobj.focus();
23
24         }
25     </script>

这里存在一个小问题,就是当已经双击一次的情况下,input已存在,再次双击,会出现input的内容被替换为上次双击的input的html代码。

解决方案是判断是否已存在input标签,如果存在,直接return,不做任何操作。

以下是修改后的Js代码:

 1 <script type="text/javascript">
 2         function ShowElement(element) {
 3             var oldhtml = element.innerHTML;
 4             //如果已经双击过,内容已经存在input,不做任何操作
 5             if(oldhtml.indexOf(‘type="text"‘) > 0){
 6                 return;
 7             }
 8             //创建新的input元素
 9             var newobj = document.createElement(‘input‘);
10             //为新增元素添加类型
11             newobj.type = ‘text‘;
12             //为新增元素添加value值
13             newobj.value = oldhtml;
14             //为新增元素添加光标离开事件
15             newobj.onblur = function() {
16                 element.innerHTML = this.value == oldhtml ? oldhtml : this.value;
17                 //当触发时判断新增元素值是否为空,为空则不修改,并返回原有值
18             }
19             //设置该标签的子节点为空
20             element.innerHTML = ‘‘;
21             //添加该标签的子节点,input对象
22             element.appendChild(newobj);
23             //设置选择文本的内容或设置光标位置(两个参数:start,end;start为开始位置,end为结束位置;如果开始位置和结束位置相同则就是光标位置)
24             newobj.setSelectionRange(0, oldhtml.length);
25             //设置获得光标
26             newobj.focus();
27
28         }
29     </script>

原文地址:https://www.cnblogs.com/php-linux/p/8510006.html

时间: 2024-10-08 11:03:06

JS实现双击编辑可修改的相关文章

vue实现双击编辑

JS 实现双击编辑 原始 HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA

JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素

JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素  原文:JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素 源代码下载地址:http://www.zuidaima.com/share/1550463322606592.htm 源代码截图: JS实现可编辑的表格,双击可编辑,可以删除行和列,增加行和列,重置,导出表格,也可以上下移动元素

JQUERY、AJAX双击DIV,直接修改DIV内的内容

最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值,而要重新进入编辑页比较麻烦,于是自己动手写…… 最近在做后台功能开发的时候,用到对排序字段的修改,感觉只为了修改一个排序值,而要重新进入编辑页比较麻烦,于是网上找点资料自己动手写了一个jquery双击实现直接修改排序值的效果: html代码: <div title="[双击可直接修改]" class="changeSort" id="{$id}">{$sort

如何禁用 FastAdmin 双击编辑功能?

如何禁用 FastAdmin 双击编辑功能? 新版 (1.0.0.20180513_beta)增加一个新功能,可以禁止双击编辑. 很多人还是喜欢双击选中复制,默认的双击编辑还是不怎么习惯. 可以以下文件中修改并禁用. require-table.js pagination: true, clickToSelect: true, //是否启用点击选中 dblClickToEdit: true, //是否启用双击编辑,改为 false 即可. singleSelect: false, //是否启用单

怎样编辑和修改pdf格式文档

由Adobe公司开发的PDF格式文件具有良好的跨平台优势,能够最大程度保持文档的版面格式的阅读的便利性,但也因为这样,给我们编辑和修改带来了很多问题,在日常工作中,可能很多人都遇到过需要对一份PDF文件进行编辑修改却无从下手的情况,下面读者就教大家如何编辑和修改PDF格式文件. PDF阅读器软件很多,如常见的Adobe reader等,这些软件体积也都比较小巧,但是却不能对PDF文件进行编辑或者编辑功能较单一.捷速PDF编辑器是PDF编辑软件,体积小巧,但是编辑功能确实最强大的,支持修改编辑PD

编辑、修改当前行

在日常开发中难免会对一个对话框进行编辑.修改方面的操作,示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button"  /> <table border

在线即时展现 Html、JS、CSS 编辑工具 - JSFiddle

在线即时展现 Html.JS.CSS 编辑工具 - JSFiddle 想对它做些说明介绍.但是它确是那么的easy使用. 兴许有时间,把左側列表作以相关介绍和演示样例演示吧.

js实现双击后网页自动跑-------Day55

公司的界面设计环节总算是告一段落了,必须要承认的是,这段时间晚间的学习带给我很多益处,在工作中偶尔的应用,效果出奇的好,收到领导和同事的一些小赞扬,表示很欣慰,也长了点不少自信,虽然不理解,他们这些工作好几年的人应该对这些不是应该都很了解么,为什么会表现出来有些陌生,不过不想那么多了,喜欢就好. 今天来记录下js实现双击后网页自动跑,这个在很多网站上都有所体现吧,那么该如何实现呢? 首先我们来分析下实现的基本原理: 1.获取鼠标的双击事件(这个在前面曾经记录过一次,但是很不幸的是上次貌似还写错了

ArcGIS学习记录&mdash;属性表的编辑与修改

原文地址: ArcGIS问题:属性表的编辑与修改 - Silent Dawn的日志 - 网易博客 http://gisman.blog.163.com/blog/static/34493388200942785434949/   属性表的编辑 1. 属性表的编辑与修改 属性表的ID的添加和删除须在stop editing 状态下,在修改或添加具体属性时要在start editing 状态下,修改添加完成后save edits. 2.属性表数据的恢复.删除.复制或粘贴 失误删除要素后,打开备份的原