Vue实现点击按钮或者图标可编辑输入框

Posted 水香木鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue实现点击按钮或者图标可编辑输入框相关的知识,希望对你有一定的参考价值。

博主介绍

📢点击下列内容可跳转对应的界面,查看更多精彩内容!

🍎主页:水香木鱼
🍍专栏:后台管理系统


文章目录

简介:这是一篇有关【Vue - 实现点击按钮(笔图标)可编辑 el-input 输入框(点击文字内容后变成 <input> 输入框同时能修改和取消)】的文章,博主用最精简的语言去表达给前端读者们。

edit组件源码 页面使用

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实现防抖函数节流函数,全局使用输入框按钮

vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效

vue-生成二维码生成点击输入框内叉号移除生成的二维码输入框聚焦

vue-生成二维码生成点击输入框内叉号移除生成的二维码输入框聚焦

vue实现修改title提示框-默认样式两种方式