رفتن به محتوای اصلی

شماره کارت

فیلد شماره کارت بانکی با گروه‌بندی خودکار، تشخیص بانک و اعتبارسنجی Luhn.

import { CardNumberInput } from "@kashi-ui/react";

نمونه

شش رقم اول را تایپ کنید، مثلاً 603799 یا 610433، تا لوگو و نام بانک نمایش داده شوند.

با تایپ شش رقم اول، نام بانک نمایش داده می‌شود.

<CardNumberInput
label="شماره کارت"
name="card"
onValueChange={(value, valid, bank) => console.log(value, valid, bank)}
/>

رفتار

  • گروه‌بندی: ارقام به‌صورت خودکار در گروه‌های چهارتایی نمایش داده می‌شوند. هنگام ویرایش وسط شماره، مکان‌نما سر جای درستش می‌ماند.
  • چسباندن: شماره‌ای که با فاصله، خط تیره یا ارقام فارسی کپی شده هم درست خوانده می‌شود.
  • تشخیص بانک: لوگو و نام بانک از شش رقم اول (BIN) تشخیص داده می‌شوند. لوگوها فقط وقتی بانک شناخته شد بارگذاری می‌شوند و حجم اولیهٔ برنامه را زیاد نمی‌کنند (لوگوی بانک‌ها). فهرست بانک‌ها ممکن است کامل نباشد؛ از آن فقط برای راهنمایی کاربر استفاده کنید.
  • اعتبارسنجی: شمارهٔ ۱۶ رقمی با الگوریتم Luhn بررسی می‌شود.
  • تکمیل خودکار: با autocomplete="cc-number"، مرورگر می‌تواند کارت ذخیره‌شده را پیشنهاد دهد.

این فیلد شماره را فقط در مرورگر قالب‌بندی می‌کند. شمارهٔ کارت داده‌ای حساس است؛ آن را فقط از طریق HTTPS ارسال کنید و بدون نیاز ذخیره نکنید.

ویژگی‌ها

نامنوعپیش‌فرضتوضیح
valuestring—مقدار کنترل‌شده: ۱۶ رقم انگلیسی بدون فاصله
defaultValuestring""مقدار اولیه
onValueChange(value: string, valid: boolean, bank: string | null) => void—با هر تغییر
digits"fa" | "latin""fa"خط ارقام نمایشی
showBankbooleantrueنمایش نام بانک
showBankLogobooleantrueنمایش لوگوی بانک (بارگذاری تنبل)
invalidMessageReactNode"شماره کارت معتبر نیست."پیام خطا
namestring—نام فیلد مخفی فرم با ارقام بدون فاصله

بدون React

import { isValidCardNumber, getBankByCard, formatCardNumber } from "@kashi-ui/persian";

formatCardNumber("6037991234567890"); // "6037 9912 3456 7890"
getBankByCard("603799")?.name;        // "بانک ملی"
isValidCardNumber("4111 1111 1111 1111"); // true

دسترس‌پذیری

  • نام بانک با aria-describedby به فیلد متصل است و صفحه‌خوان آن را همراه فیلد می‌خواند.
  • خطا پس از خروج از فیلد یا کامل شدن ۱۶ رقم نمایش داده می‌شود، نه هنگام تایپ.