当前位置:首页 > 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>

金额格式化过滤器

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

vue实现输入金额

// 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>

金额输入验证

添加表单验证规则:

vue实现输入金额

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实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…

vue实现扫码

vue实现扫码

Vue 实现扫码功能 使用 vue-qrcode-reader 库 安装 vue-qrcode-reader 库: npm install vue-qrcode-reader 在 Vue 组件中引入…

vue实现数据增加

vue实现数据增加

vue实现数据增加的几种方法 在Vue中实现数据增加通常涉及以下几个核心概念和方法: 响应式数据声明 在Vue组件中,使用data选项或ref(Vue 3)声明响应式数据: // Vue 2 da…

前端vue怎么实现

前端vue怎么实现

Vue 前端实现方法 安装 Vue 通过 npm 或 yarn 安装 Vue: npm install vue # 或 yarn add vue 创建 Vue 实例 在 HTML 中引入 Vue 并…