Vue实现点击按钮或者图标可编辑输入框
Posted 水香木鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue实现点击按钮或者图标可编辑输入框相关的知识,希望对你有一定的参考价值。
博主介绍
📢点击下列内容可跳转对应的界面,查看更多精彩内容!
文章目录
简介:这是一篇有关【Vue - 实现点击按钮(笔图标)可编辑 el-input 输入框(点击文字内容后变成 <input> 输入框同时能修改和取消)】的文章,博主用
最精简的语言
去表达给前端读者们。
1、edit组件源码
<!--edit组件-->
<template>
<div>
<div v-if="isEdit" class="editBox">
<!-- 改修改框样式去下面style里 -->
<input v-model="newVal" class="ipt" />
<div @click="handleSave">
<!-- 自定义提交按钮 -->
<slot name="save"></slot>
</div>
<div @click="handleCancel">
<!-- 自定义取消按钮 -->
<slot name="cancel"></slot>
</div>
</div>
<div v-else @click="handleEdit" class="editBox">
<!-- 自定义文字样式 -->
<div>
newVal
</div>
<slot name="button"></slot>
<!-- 自定义编辑按钮 -->
</div>
</div>
</template>
<script>
export default
props:
val:
//文字显示
type: String,
default: "",
,
,
data()
return
nameEditText: "nameEditText",
newVal: this.val,
backUp: null,
isEdit: false,
;
,
methods:
// 取消编辑状态
handleCancel()
this.newVal = this.backUp;
this.isEdit = false;
,
// 点击编辑
handleEdit()
//先让其他的 编辑框为 flase
this.$parent.$children
.filter((item) => item.nameEditText == "nameEditText")
.forEach((items) =>
items.isEdit = false;
);
this.isEdit = true;
this.backUp = this.newVal;
,
// 保存编辑($emit传递给父组件)
// 同时清空状态
handleSave()
this.isEdit = false;
// 传递给父组件
this.$emit("result", this.newVal);
,
,
;
</script>
<style scoped>
.editBox
display: flex;
align-items: center;
.ipt
width: 300px;
</style>
2、页面使用
<template>
<div class="box">
<h1>本地数据:</h1>
<el-alert :title="text" type="info"> </el-alert>
<Edit :val="text" @result="getText">
<a slot="button" style="margin-left: 30px" class="compile">
<i class="el-icon-edit"></i>点击编辑
</a>
<a slot="save" class="save">提交</a>
<a slot="cancel" class="cancel">取消</a>
</Edit>
</div>
</template>
<script>
// 注意路径
import Edit from "@/components/edit.vue";
export default
components: Edit ,
data()
return
text: "水香木鱼",
;
,
methods:
/**
* 获取编辑后的文字(点击组件"保存"按钮后触发)
* @description 这块就直接请求接口修改即可,相关操作都在这
* @param String e - 最终文字
* @return void
*/
getText(e)
// console.log(e)
this.text = e;
// 其他操作 ↓
console.log("请求接口修改数据!!");
// ...
,
,
;
</script>
<style lang="less" scoped>
//提交
.save
color: #fff;
background: #fc5531;
display: inline-block;
width: 72px;
height: 28px;
line-height: 28px;
text-align: center;
border-radius: 15px;
font-size: 14px;
//取消
.cancel
color: #fc5531;
border: 1px solid #fc5531;
display: inline-block;
width: 72px;
height: 28px;
line-height: 28px;
text-align: center;
border-radius: 15px;
font-size: 14px;
//编辑
.compile
color: #fc5531;
border: 1px solid #fc5531;
display: inline-block;
width: 92px;
height: 28px;
line-height: 28px;
text-align: center;
border-radius: 15px;
font-size: 14px;
</style>
相关推荐
⭐vue-生成二维码【生成、点击输入框内叉号移除生成的二维码、输入框聚焦】
⭐前端实现放大镜效果【原生js实现、vue实现】
⭐vue非常实用的几行代码【日期处理、字符串处理、数组处理、颜色操作】
⭐vue实现随机验证码(数字类型、字母类型)业务【适用于登录页、网页安全码】
⭐vue实现换一批业务【WoodenFish完整版】
以上是关于Vue实现点击按钮或者图标可编辑输入框的主要内容,如果未能解决你的问题,请参考以下文章
vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效
vue-生成二维码生成点击输入框内叉号移除生成的二维码输入框聚焦