当前位置:首页 > VUE

vue div input框实现

2026-02-23 13:50:14VUE

使用 Vue 实现 div 输入框

在 Vue 中可以通过自定义组件或原生 HTML 实现 div 输入框的效果,以下是两种常见方法:

vue div input框实现

方法一:使用 contenteditable 属性

通过 HTML5 的 contenteditable 属性可以让 div 具备输入功能,结合 Vue 实现双向绑定:

vue div input框实现

<template>
  <div 
    contenteditable="true" 
    @input="handleInput"
    v-html="content"
  ></div>
</template>

<script>
export default {
  data() {
    return {
      content: ''
    }
  },
  methods: {
    handleInput(e) {
      this.content = e.target.innerHTML
    }
  }
}
</script>

方法二:封装为可复用组件

创建一个可复用的 div 输入框组件:

<template>
  <div 
    class="editable-div"
    contenteditable="true"
    @blur="updateContent"
    ref="editableDiv"
  ></div>
</template>

<script>
export default {
  props: ['value'],
  mounted() {
    this.$refs.editableDiv.innerHTML = this.value
  },
  methods: {
    updateContent() {
      this.$emit('input', this.$refs.editableDiv.innerHTML)
    }
  },
  watch: {
    value(newVal) {
      if (newVal !== this.$refs.editableDiv.innerHTML) {
        this.$refs.editableDiv.innerHTML = newVal
      }
    }
  }
}
</script>

<style>
.editable-div {
  min-height: 100px;
  border: 1px solid #ddd;
  padding: 8px;
  outline: none;
}
</style>

方法三:结合 v-model 使用

在父组件中使用时支持 v-model 语法:

<template>
  <div>
    <editable-div v-model="htmlContent"></editable-div>
  </div>
</template>

<script>
import EditableDiv from './EditableDiv.vue'

export default {
  components: {
    EditableDiv
  },
  data() {
    return {
      htmlContent: ''
    }
  }
}
</script>

注意事项

  • contenteditable 生成的 HTML 需要特别注意 XSS 防护
  • 对于复杂需求可能需要添加更多事件处理(如粘贴、按键等)
  • 移动端可能需要额外处理焦点和键盘问题
  • 样式需自行调整以满足设计需求

以上方法提供了基础的 div 输入框实现,可根据实际需求进行扩展和优化。

标签: vuediv
分享给朋友:

相关文章

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue实现modal

vue实现modal

Vue 实现 Modal 弹窗组件 使用 Vue 实现 Modal 弹窗组件可以通过多种方式,包括原生 Vue 组件、第三方库或自定义指令。以下是几种常见方法: 原生 Vue 组件实现 创建一个基…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API met…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…