<div class="radikalwp-form-validate" data-validate><label class="radikalwp-form-validate-label" for="radikalwp-val-email">ایمیل<//label><input class="radikalwp-form-validate-input" id="radikalwp-val-email" type="email" placeholder="you@example.com"><p class="radikalwp-form-validate-msg" hidden>فرمت ایمیل صحیح نیست<//p><//div>
.radikalwp-form-validate { max-width: 320px; }
.radikalwp-form-validate-label {
display: block;
margin-bottom: 6px;
font-size: 12.5px;
font-weight: 700;
color: #334155;
}
.radikalwp-form-validate-input {
width: 100%;
padding: 12px 15px;
font-family: inherit;
font-size: 14px;
color: #1e293b;
background: #fff;
border: 1.5px solid #e2e8f0;
border-radius: 12px;
outline: none;
transition: border-color .25s ease, box-shadow .25s ease;
}
.radikalwp-form-validate-input.is-valid {
border-color: #10b981;
box-shadow: 0 0 0 3px rgba(16, 185, 129, .12);
}
.radikalwp-form-validate-input.is-invalid {
border-color: #ef4444;
box-shadow: 0 0 0 3px rgba(239, 68, 68, .12);
}
.radikalwp-form-validate-msg {
margin: 6px 2px 0;
font-size: 11.5px;
color: #ef4444;
}
// اعتبارسنجی زنده فرمت ایمیل با تغییر کلاس وضعیت
document.querySelectorAll('[data-validate]').forEach(function (wrap) {
var input = wrap.querySelector('input');
var msg = wrap.querySelector('.radikalwp-form-validate-msg');
input.addEventListener('input', function () {
var ok = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input.value);
input.classList.toggle('is-valid', ok);
input.classList.toggle('is-invalid', !ok && input.value.length > 2);
msg.hidden = ok || input.value.length <= 2;
});
});
درباره این اسنیپت
ورودی هوشمندی که رنگ حاشیهاش بر اساس وضعیت اعتبارسنجی زنده تغییر میکند: خاکستری عادی، سبز در حالت معتبر و قرمز با پیام خطا در حالت نامعتبر. پیام خطا زیر فیلد ظاهر میشود و لیبل کوتاه بالای ورودی دارد. برای فرمهایی که قبل از submit میخواهند بازخورد فوری بدهند ساخته شده است. منطق نمونه روی فرمت ایمیل ساده است.
پرسشهای متداول
بله؛ فقط منطق داخل رویداد input را عوض کنید (مثلاً طول رمز یا فرمت شماره موبایل). کلاسهای is-valid و is-invalid همانها کار میکنند.
المان p همیشه در DOM است و فقط hidden میشود؛ چون ارتفاع را به فرم اضافه میکند، اگر پرش نمیخواهید آن را با position یا min-height جایگزین کنید.
خط کلاس is-valid را حذف کنید تا فقط حالت خطا رنگ بگیرد؛ برخی تیمها ترجیح میدهند موفقیت ساکت باشد.
امتیاز شما به این محتوا
میانگین امتیاز کاربران: ۴.۶ از ۵ رأی — برای امتیازدهی وارد شوید
دیدگاهها (۰)
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!