Skip to content

CInputCurrency

Ô nhập tiền: người dùng thấy 1.234.567,89, còn model là số thuần. Dấu chấm ngăn nghìn, dấu phẩy thập phân theo quy ước Việt Nam.

Dùng khi: nhập số tiền — giá trị đơn hàng, hạn mức, chi phí.

Không dùng khi: số không phải tiền (số lượng, số ngày) — dùng CInputNumber; phần trăm — dùng CInputPercent.

Giá trị

ts
const amount = ref<number | null>(12_500_000)
Kiểu modelnumber | null — ô rỗng trả null, không phải 0
Người dùng thấy12.500.000
Gửi lên backend12500000

Vì model là số nên không cần quy đổi trước khi gửi API, và cũng đừng tự bỏ dấu chấm bằng tay ở tầng gọi API.

Định dạng lại được chuẩn hoá khi rời ô (blur): gõ dở 1.234, sẽ thành 1.234 sau khi rời ô.

Trong form

vue
<CFormItem label="Giá trị đơn hàng" name="amount">
  <CInputCurrency v-model:value="model.amount" />
</CFormItem>

Rule bắt buộc vẫn dùng như ô thường; nhớ rằng ô rỗng là null:

ts
const rules = {
  amount: [
    { required: true, message: 'Nhập giá trị đơn hàng' },
    { type: 'number', min: 1, message: 'Giá trị phải lớn hơn 0' },
  ],
}

API

Props

TênKiểuMặc địnhMô tả
valuestring | number | nullv-model:value — số tiền dạng number; ô nhập tự định dạng 1.234.567,89.

Sự kiện

TênPayloadMô tả
update:value[val: number | null]v-model:value — số đã parse; ô rỗng trả `null`.
blur[e: FocusEvent]Rời khỏi ô nhập (sau khi đã định dạng lại giá trị).

Mọi thuộc tính khác của a-input (placeholder, disabled, size, addon-after…) được chuyển tiếp:

vue
<CInputCurrency v-model:value="amount" placeholder="0" addon-after="₫" :disabled="readonly" />

Lưu ý

  • Không đặt đơn vị vào trong ô; dùng addon-after="₫" hoặc nhãn của CFormItem.
  • Ô không giới hạn số chữ số — cần chặn hạn mức thì kiểm bằng rule hoặc ở backend.
  • Bảng hiển thị tiền thì định dạng bằng Intl.NumberFormat('vi-VN'), không dùng component nhập liệu chỉ để hiển thị.
  • Số âm không nhập được (ô chỉ nhận chữ số và dấu phẩy) — số tiền âm thì thể hiện bằng loại giao dịch, đừng trông vào dấu trừ.

Liên quan