پیشنمایش زنده (iframe sandbox)
تمامصفحه
<div class="radikalwp-form-count"><textarea class="radikalwp-form-count-area" rows="4" maxlength="300" placeholder="نظر خود را بنویسید..."><//textarea><span class="radikalwp-form-count-num" data-count>۰ / ۳۰۰<//span><//div>
.radikalwp-form-count { position: relative; max-width: 380px; }
.radikalwp-form-count-area {
width: 100%;
padding: 14px 16px 30px;
font-family: inherit;
font-size: 13.5px;
line-height: 1.9;
color: #1e293b;
background: #fff;
border: 1.5px solid #e2e8f0;
border-radius: 14px;
outline: none;
resize: vertical;
transition: border-color .25s ease, box-shadow .25s ease;
}
.radikalwp-form-count-area:focus {
border-color: #6366f1;
box-shadow: 0 0 0 4px rgba(99, 102, 241, .13);
}
.radikalwp-form-count-num {
position: absolute;
bottom: 10px;
left: 14px;
font-size: 11px;
color: #94a3b8;
font-variant-numeric: tabular-nums;
}
.radikalwp-form-count-num.is-warn { color: #f59e0b; }
.radikalwp-form-count-num.is-full { color: #ef4444; font-weight: 700; }
// شمارنده زنده با هشدار رنگی نزدیک سقف
var MAX = 300;
var faDigits = ['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];
function faNum(n) { return String(n).replace(/\d/g, function (d) { return faDigits[+d]; }); }
document.querySelectorAll('.radikalwp-form-count').forEach(function (wrap) {
var area = wrap.querySelector('textarea');
var num = wrap.querySelector('[data-count]');
area.addEventListener('input', function () {
var left = MAX - area.value.length;
num.textContent = faNum(area.value.length) + ' / ' + faNum(MAX);
num.classList.toggle('is-warn', left <= 50 && left > 0);
num.classList.toggle('is-full', left === 0);
});
});
درباره این اسنیپت
متنهای چندخطی با شمارنده زنده کاراکتر در گوشه پایین که با نزدیک شدن به سقف، رنگش نارنجی و در سقف قرمز میشود. ارتفاع ثابت و اسکرول داخلی دارد تا چیدمان صفحه با متن بلند نپرد. برای دیدگاهها، توضیح محصول و فیلد بیو مناسب است. سقف با ویژگی maxlength و عدد نمایش دادهشده همگام است.
پرسشهای متداول
مقدار maxlength در HTML و ثابت MAX در جاوااسکریپت را همزمان تغییر دهید؛ متن «۳۰۰» نمایشی هم از همین ثابت ساخته میشود.
چون روی گوشه پایین فیلد مطلق نشسته و با اسکرول متن جابهجا نمیشود؛ اگر داخل textarea بود همراه متن حرکت میکرد و ناخوانا میشد.
بله؛ resize: vertical اجازه تغییر ارتفاع فقط عمودی میدهد تا عرض چیدمان بههم نریزد. اگر میخواهید قفل شود، مقدار را none کنید.
امتیاز شما به این محتوا
میانگین امتیاز کاربران: ۴.۸ از ۳ رأی — برای امتیازدهی وارد شوید
دیدگاهها (۰)
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!