Skip to content

Currency Input ​

Live-formatting currency input. Formats as you type with configurable decimal, thousands separator, prefix, suffix, and precision.

v-model:
vue
<script setup>
const amount = ref(null)
</script>

<template>
  <VxCurrencyInput
    v-model="amount"
    :options="{ prefix: '$ ', thousands: ',', decimal: '.', precision: 2 }"
  />
  <!-- Type: 1234567 → displays: $ 1,234,567.00 -->
  <!-- v-model: 1234567 (number) -->
</template>

Dollar Format ​

1234567.89
vue
<template>
  <!-- $ 1,234,567.89 -->
  <VxCurrencyInput :options="{ prefix: '$ ', thousands: ',', decimal: '.', precision: 2 }" />
</template>

Euro Format ​

50000
vue
<template>
  <!-- 50.000,00 € -->
  <VxCurrencyInput :options="{ suffix: ' €', thousands: '.', decimal: ',', precision: 2 }" />
</template>

Space as Thousands Separator ​

9999.99
vue
<template>
  <!-- 9 999.99 -->
  <VxCurrencyInput :options="{ thousands: ' ', decimal: '.', precision: 2 }" />
</template>

UZS (no decimals, space separator) ​

1500
vue
<template>
  <!-- 1 500 sum -->
  <VxCurrencyInput :options="{ suffix: ' sum', thousands: ' ', precision: 0 }" />
</template>

RUB Format ​

42000
vue
<template>
  <!-- 42 000,00 ₽ -->
  <VxCurrencyInput :options="{ suffix: ' ₽', thousands: ' ', decimal: ',', precision: 2 }" />
</template>

Prefix + Suffix ​

250.5
vue
<template>
  <!-- USD 250 .00 -->
  <VxCurrencyInput :options="{ prefix: 'USD ', suffix: ' .00', thousands: ',', precision: 0 }" />
</template>

Clearable ​

vue
<template>
  <VxCurrencyInput v-model="amount" :options="{ prefix: '$ ' }" clearable />
</template>

Sizes ​

vue
<template>
  <VxCurrencyInput size="sm" />
  <VxCurrencyInput />
  <VxCurrencyInput size="lg" />
</template>

Allow Negative ​

vue
<template>
  <VxCurrencyInput allow-negative />
</template>

Options Reference ​

KeyTypeDefaultDescription
decimalstring'.'Decimal separator character
thousandsstring','Thousands separator (use ' ' for space)
prefixstring''Prefix text (e.g. '$ ', '€ ')
suffixstring''Suffix text (e.g. ' USD', ' sum', ' ₽')
precisionnumber2Number of decimal places
maskedbooleanfalseIf true, v-model returns formatted string

Props ​

PropTypeDefaultDescription
modelValuenumber | string | nullnullValue (v-model)
optionsCurrencyOptions{}Formatting options (see above)
placeholderstring'0.00'Placeholder
disabledbooleanfalseDisable
readonlybooleanfalseRead only
clearablebooleanfalseClear button
size'sm' | 'default' | 'lg''default'Size
allowNegativebooleanfalseAllow negative values

Events ​

EventTypeDescription
update:modelValue(v: number | string | null)Value changed
change(v: number | null)Value changed on blur
focus(e: FocusEvent)Focused
blur(e: FocusEvent)Blurred