日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

element input輸入框千分位無法回顯問題解決方法

作者:布偶亂跑 更新時(shí)間: 2022-04-10 編程語言

在后臺(tái)管理的項(xiàng)目中,輸入部分?jǐn)?shù)量是需要千分位分割,但是遇到了父組件調(diào)用子組件無法回顯的問題,父子組件不能雙向綁定的問題,在使用計(jì)算屬性之后解決,方法如下:

  • 父組件
 <el-form-item label="最小庫存StockMinSS:"
               prop="minSS">
		  <Custom-Input ref="ipt"
		   				:value.sync="editForm.minSS"
		                :switchDayToWeek='switchDayToWeek' />
</el-form-item>
  • 子組件
<template>
  <el-input v-model="defaultValue"
            @input="changeInput"
            v-bind="options">
    <template slot="append">{{ switchDayToWeek }}</template>
  </el-input>
</template>
<script>
export default {
  name: 'CustomInput',
  props: {
    value: String,
    options: Object,
    switchDayToWeek: String
  },
  data() {
    return {
      // defaultValue: '0'
    }
  },
  mounted() {
    // this.defaultValue = this.value ? this.transferToDecimal(this.value) : '0'
  },
  computed: {
  // 計(jì)算屬性賦值
    defaultValue: {
      get: function () {
        return this.transferToDecimal(this.value)
      },
      // setter
      set: function (newValue) {
        console.log('newValue===', newValue)
      }
    }
  },
  methods: {
    transferToDecimal(num) {
      if (!num) return
      let [sInt, sFloat] = num.split('.')
      // 注意 “$&,”的應(yīng)用
      sInt = sInt.replace(/\d(?=(\d{3})+$)/g, '$&,')
      // 區(qū)分整數(shù)與浮點(diǎn)小數(shù)
      return sFloat ? `${sInt}.${sFloat}` : `${sInt}`
    },
    changeInput(value) {
      // 此處允許用戶輸入點(diǎn) “.”, 同時(shí)如果再次輸入點(diǎn)將會(huì)被截掉
      if (value.charAt(value.length - 1) == '.') {
        if (value.charAt(value.length - 2) == '.') {
          this.defaultValue = value.substr(0, value.length - 1)
        }
        return
      }
      // 此處防止用戶輸入特殊字符,具體查看下面正則
      value = this.cleanInput(value)
      this.defaultValue = this.transferToDecimal(value)

      // 此處激活.sync默認(rèn)行為實(shí)現(xiàn)props的雙向綁定, 注意'update'
      this.$emit('update:value', value)
    },
    cleanInput(value) {
      // 正則表達(dá)式只匹配 首位負(fù)數(shù), 數(shù)字, 以及第一個(gè)“.”號(hào)(如有多個(gè)只匹配一個(gè)),提取為數(shù)值默認(rèn)順序連接,然后通過轉(zhuǎn)換函數(shù)轉(zhuǎn)換為千分位
      return value.match(/(^-\d+|\d+|\.{1})/g, '').join('')
    }
  }
}
</script>

原文鏈接:https://blog.csdn.net/weixin_44634372/article/details/115794112

欄目分類
最近更新