vue中表格输入框的新增,查看功能

功能:

新增功能:

<template>
  <div :contenteditable="canEdit" ref="materialTxt" v-html="innerText" @keydown="textareaKeydown($event)" @blur="changeText"></div>
</template>
<script>
export default {
  name: 'divEdit',
  props: ['value'],
  data() {
    return {
      canEdit: true
    }
  },
  mounted() {
    this.$refs.materialTxt.addEventListener('paste', function (e) {
      console.log('监听到了')
      e.stopPropagation()
      e.preventDefault()
      let text = ''
      const event = e.originalEvent || e
      if (event.clipboardData && event.clipboardData.getData) {
        text = event.clipboardData.getData('text/plain')
      } else if (window.clipboardData && window.clipboardData.getData) {
        text = window.clipboardData.getData('Text')
      }
      if (document.queryCommandSupported('insertText')) {
        document.execCommand('insertText', false, text)
      } else {
        document.execCommand('paste', false, text)
      }
    })
    this.$nextTick(function () {
      var editType = localStorage.getItem('rateIsType')
      if (editType == '1') {
        this.canEdit = false
      }
    })
  },
  computed: {
    innerText() {
      return this.value
    }
  },
  methods: {
    changeText() {
      var value = this.$el.innerHTML
      this.$emit('input', value)
    },
    onEnter(event) {
      event.preventDefault()
      return false
    },
    textareaKeydown(event) {
      if (event.keyCode === 13) {
        event.preventDefault() // 阻止浏览器默认换行操作
        return false
      }
    }
  }
}
</script>

查看功能:

<template>
    <div>{{value}}</div>
</template>
<script>
    export default {
      name:'divView',
        props: ['value'],
        data(){
            return {innerText:this.value}
        },
        methods:{
        }
    }
</script>

使用:(通过动态组件切换是否可编辑)

<template>
  <div>
    <compontnt :is="componentsName" v-model="main.name" class="full"></compontnt>
  </div>
</template>

<script>
import divEdit from './divEdit.vue'
import divView from './divView.vue'

export default {
  name: 'applyForm',
  data() {
    return {
      componentsName: 'divEdit',
    }
   },
   components: {
    divEdit,
    divView
    },
  },
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值