当前位置:首页 > 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查看更多怎么实现

vue查看更多怎么实现

实现 Vue 的“查看更多”功能 数据截取与显示控制 通过 v-if 或 v-show 控制内容的显示与隐藏。初始状态下只显示部分内容,点击“查看更多”后展开完整内容。 <template&g…

vue实现用户信息删除

vue实现用户信息删除

Vue 实现用户信息删除功能 在 Vue 中实现用户信息删除功能通常涉及前端界面交互和后端 API 调用。以下是实现步骤: 前端界面设计 创建删除按钮或操作项,通常使用 @click 事件触发删除操…

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 路由可以通过 Vue Router 库来实现,Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue Router 通…

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…

vue实现视频

vue实现视频

Vue 实现视频播放的方法 在 Vue 项目中实现视频播放可以通过多种方式完成,以下是几种常见的方法: 使用 HTML5 的 <video> 标签 在 Vue 组件中直接使用 HTML…

vue实现录像

vue实现录像

Vue 实现录像功能 在 Vue 中实现录像功能通常需要借助浏览器的 MediaDevices API 和 MediaRecorder API。以下是实现步骤: 获取用户摄像头和麦克风权限 使用 n…