Tiny (<2k gzipped) input/directive mask for currency.
- Tiny
- Dependency Free
- Component or Directive flavors
- Support edit in any place of the input
- Mobile support
import Vue from 'vue'
import money from 'v-money'
Vue.use(money, {precision: 4}) // register directive v-money and component <money>
B. Use as component: https://jsfiddle.net/auom8st8/
<template>
<div>
<money v-model="price" v-bind="money" /> {{price}}
</div>
</template>
<script>
import {Money} from 'v-money'
export default {
components: {Money},
data () {
return {
price: 123.45,
money: {
decimal: ',',
thousands: '.',
prefix: 'R$ ',
suffix: ' #',
precision: 2,
masked: false
}
}
}
}
</script>
C. Use as directive: https://jsfiddle.net/auom8st8/
Must use vmodel.lazy
to bind works properly.
<template>
<div>
<input v-model.lazy="price" v-money="money" /> {{price}}
</div>
</template>
<script>
import {VMoney} from 'v-money'
export default {
data () {
return {
price: 123.45,
money: {
decimal: ',',
thousands: '.',
prefix: 'R$ ',
suffix: ' #',
precision: 2,
masked: false
}
}
},
directives: {VMoney}
}
</script>
property | Required | Type | Default | Description |
---|---|---|---|---|
precision | true | Number | 2 | How many decimal places |
decimal | false | String | "." | Decimal separator |
thousands | false | String | "," | Thousands separator |
prefix | false | String | "" | Currency symbol followed by a Space, like "R$ " |
suffix | false | String | "" | Percentage for example: " %" |
masked | false | Boolean | false | If the componente output should include the mask or not |