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-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="form-group">
<label>姓名:</label>
<span>张三</span>
</div>
<div class="form-group">
<label>个人介绍:</label>
<span>我就是我,颜色不一样的烟火!</span>
</div>
</body>
</html>

原始 页面效果:

JS代码:

<!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-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="form-group">
<label>姓名:</label>
<span ondblclick="edit(this)">张三</span>
</div>
<div class="form-group">
<label>个人介绍:</label>
<span ondblclick="edit(this)">我就是我,颜色不一样的烟火!</span>
</div>

<script>
function edit (element) {
// 获取要编辑的文本内容
var oldHtml = element.innerHTML;

// 创建一个新的 input 输入框
var newInput = document.createElement(‘input‘);

// 为新的 input添加属性
newInput.type = "text";
newInput.value = oldHtml;

// 清空当前元素的文本内容
element.innerHTML = ‘‘;

// 把新的 input 框 追加到当前元素节点中
element.appendChild(newInput);

// 设置选择文本的内容或设置光标位置(两个参数:start,end;start为开始位置,end为结束位置;如果开始位置和结束位置相同则就是光标位置)
newInput.setSelectionRange(0, oldHtml.length)

// 为新 input 框获取焦点
newInput.focus();

// 为新的 input 添加失去焦点事件
newInput.onblur = function () {
// 判断失去焦点时,input 框的值是否与原值相同,相同则表示没有修改,返回原值;不同则表示有改动,返回新值
element.innerHTML = this.value == oldHtml? oldHtml : this.value;
}
}
</script>
</body>
</html>

效果:

VUE 实现双击编辑

代码:

<template>
<div>
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th>姓名</th>
<th>性别</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list">
<td>
<span v-if="!editing" @dblclick="edit">{{item.wenzi}}</span>
<input type="text"
class="form-control"
ref="input"
v-if="editing"
:value="item.wenzi"
v-model="item.wenzi"
@blur="save">
</td>
<td>
<span v-if="!editing" @dblclick="edit">{{item.gender}}</span>
<input type="text"
class="form-control"
ref="input"
v-if="editing"
:value="item.gender"
v-model="item.gender"
@blur="save">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>

<script type="text/ecmascript-6">
export default {
data: function () {
return {
editing: false,
list: [
{wenzi: ‘迪热力巴‘, gender: ‘女性‘},
{wenzi: ‘鹿晗‘, gender: ‘男性‘},
],
}
},
methods: {
edit: function () {
this.editing = true
this.$nextTick(function () {
this.$els.input.focus()
})
},
save: function () {
this.editing = false
}
}
}
</script>

<style lang="scss" rel="stylesheet/scss" scoped>

</style>

效果:

当然,这种效果在实际应用中可能不太友好,我们也可以用按钮来控制

时间: 2024-10-11 22:35:25

vue实现双击编辑的相关文章

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

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

Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框

实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚焦点击的显示框. 第三是点击编辑框外的地方,隐藏编辑框. 一二点都是在startPipeLineNameEdit这个method中去实现. 2. 实现双击显示编辑框 思路: 使用两个span包含双击前和双击后的代码,用isEditingPipeLineName这个变量去控制显示与否.(PipeLin

JS实现双击编辑可修改

需求描述:在一段文字处双击可以进行修改,也就是双击后创建输入框,输入内容,在输入框失去焦点后将输入的内容再以文字的形式显示出来,以下是html代码: 1 <fieldset> 2 <legend>双击用户名进行编辑</legend> 3 <dl> 4 <dt>你的用户名:</dt> 5 <dd ondblclick="ShowElement(this)">诸葛亮</dd> 6 </dl

ant design vue中点击编辑,表单数据的绑定

在一般的表单中,都是使用v-model来双向绑定数据,但是ant design vue中则会给予警告 1,获取数据: getNews({ params: { Id: i //传进来的id等值,具体看后端要什么 } }).then(res => { console.log(res) if (res.code == 0) { this.form.setFieldsValue({ title: res.data.title, introduce: res.data.introduce }) } })

一周一个小demo — vue.js实现备忘录功能

这个vue实现备忘录的功能demo是K在github上找到的,K觉得这是一个用来对vue.js入门的一个非常简单的demo,所以拿在这里共享一下. (尊重他人劳动成果,从小事做起~  demo原github地址:https://github.com/vuejs/vue) 一.实现效果 二.代码展示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>备忘录&l

knockoutjs + easyui.treegrid 可编辑的自定义绑定插件

http://blog.csdn.net/maddemon/article/details/16846183 目前仅支持URL的CRUD.不需要的话可以却掉相关代码,把treegrid的data直接赋值给viewModel,然后用ko提交整个data 1.支持双击编辑 2.单击Cell,自动保存编辑. 3.4个功能按钮. 插件源码: ko.bindingHandlers.etreegrid = { editing: false, editIndex: 0, init: function (ele

knockoutjs + easyui.treegrid 可编辑的自定义绑定插件【转】

目前仅支持URL的CRUD.不需要的话可以却掉相关代码,把treegrid的data直接赋值给viewModel,然后用ko提交整个data 1.支持双击编辑 2.单击Cell,自动保存编辑. 3.4个功能按钮. 插件源码: ko.bindingHandlers.etreegrid = { editing: false, editIndex: 0, init: function (element, valueAccessor, allBindings, viewModel, bindingCon

java中用jquery-easyui插件做可编辑datagird列表

jquery-easyui插件中datagrid列表(可编辑) 在某一天,我静静的花了些时间写了自认为一套还不错的可编辑的datagrid列表完整版,于是乎,想做个笔记,望各位指教哦! 下面是我的小成果~~ 案例功能演示图 (个别图稍微压缩或拉长,望不影响阅读) 除单机编辑按钮外,双击行也可开启编辑 一旦存在开启编辑后,未点击完成,则其他任何操作均不能操作,易操作就有提示 无论是单行删除还是批量删除,提醒必不可少 \ 若去掉复选框,是依然不影响操作的哦 新增行时,在当前页的最后一行会新增,然后可

Vue.js 2.0 由浅入深,第四天 day04

## 一.模块化开发 ### 1. vue-router模块化 cnpm install vue-router -S #### 1.1 编辑main.js #### 1.2 编辑App.vue #### 1.3 编辑router.config.js ### 2. axios模块化 cnpm install axios -S 使用axios的两种方式: 方式1:在每个组件中引入axios 方式2:在main.js中全局引入axios并添加到Vue原型中 ### 3. 为自定义组件添加事件 ## 二