当前位置:首页 > VUE

vue实现输入金额

2026-01-15 23:54:17VUE

实现输入金额功能

在Vue中实现金额输入功能需要考虑格式化、校验和交互体验。以下是常见的实现方法:

金额输入框组件

创建一个可复用的金额输入组件,支持自动格式化和校验:

<template>
  <input
    type="text"
    v-model="displayValue"
    @input="handleInput"
    @blur="formatValue"
    placeholder="0.00"
  />
</template>

<script>
export default {
  props: {
    value: {
      type: [Number, String],
      default: 0
    }
  },
  data() {
    return {
      displayValue: ''
    }
  },
  methods: {
    handleInput(e) {
      let value = e.target.value.replace(/[^\d.]/g, '')
      value = value.replace(/(\..*)\./g, '$1')
      this.displayValue = value
      this.$emit('input', parseFloat(value || 0))
    },
    formatValue() {
      const num = parseFloat(this.displayValue || 0)
      this.displayValue = num.toFixed(2)
      this.$emit('input', num)
    }
  },
  watch: {
    value: {
      immediate: true,
      handler(newVal) {
        this.displayValue = newVal ? parseFloat(newVal).toFixed(2) : ''
      }
    }
  }
}
</script>

金额格式化过滤器

添加全局过滤器处理金额显示:

// main.js
Vue.filter('currency', function(value) {
  if (!value) return '0.00'
  const num = parseFloat(value)
  return num.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',')
})

使用方式:

<template>
  <div>{{ amount | currency }}</div>
</template>

金额输入验证

添加表单验证规则:

export default {
  data() {
    return {
      amount: '',
      rules: {
        amount: [
          { required: true, message: '请输入金额', trigger: 'blur' },
          { 
            validator: (rule, value, callback) => {
              if (!/^\d+(\.\d{1,2})?$/.test(value)) {
                callback(new Error('请输入正确的金额格式'))
              } else {
                callback()
              }
            },
            trigger: 'blur'
          }
        ]
      }
    }
  }
}

数字键盘实现

对于移动端,可以限制输入类型为数字:

<template>
  <input 
    type="number"
    pattern="[0-9]*"
    inputmode="numeric"
    v-model="amount"
  />
</template>

金额输入优化

添加千分位分隔符显示:

methods: {
  formatCurrency(value) {
    const num = parseFloat(value.replace(/[^\d.]/g, ''))
    if (isNaN(num)) return ''
    return num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,')
  },
  parseCurrency(value) {
    return parseFloat(value.replace(/[^\d.]/g, ''))
  }
}

这些方法可以组合使用,根据具体需求选择适合的方案来实现Vue中的金额输入功能。

vue实现输入金额

标签: 金额vue
分享给朋友:

相关文章

vue实现评论

vue实现评论

Vue 实现评论功能的方法 基础评论组件结构 使用 Vue 单文件组件(SFC)构建评论功能的核心结构。模板部分包含评论输入框和评论列表,脚本部分处理数据绑定和逻辑。 <template>…

vue双向实现

vue双向实现

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是结合了数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。 数据…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [..…

vue实现选择本地文件

vue实现选择本地文件

实现文件选择功能 在Vue中实现本地文件选择可以通过HTML原生的<input type="file">元素实现。创建一个基本的文件选择组件: <template> &l…

vue实现防抖节流

vue实现防抖节流

Vue 中实现防抖(Debounce) 防抖的核心是延迟执行函数,在连续触发时取消前一次的调用,只执行最后一次。适用于输入框搜索、窗口大小调整等场景。 方法1:使用 Lodash 的 _.debo…

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…