当前位置:首页 > 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 Router 的路由配置可以天然转化为菜单结构,适合权限与路由绑定的系统: // router/index.js const rout…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需…