پرش به محتوا
بناBana UI

حالت نمایش

پالت رنگی

با ↑ ↓ جابه‌جا شوید و Enter را بزنید. Esc برای بستن.

Combobox

یک <select> معمولی با data-combobox جست‌وجوی هنگام تایپ می‌گیرد. خود select مخفی می‌ماند و منبع حقیقت است، پس ارسال فرم، FormData و change مثل قبل کار می‌کنند. ماژول combobox لازم است.

انتخاب شهر
کد
<form data-validate ui="stack" style="max-inline-size:22rem">
  <label ui="field"><span>شهر</span>
    <select name="city" data-combobox required>
      <option value="">انتخاب کنید…</option>
      <optgroup label="مرکز">
        <option value="thr">تهران</option>
        <option value="qom">قم</option>
        <option value="isf">اصفهان</option>
      </optgroup>
      <optgroup label="جنوب">
        <option value="shz" data-keywords="shiraz">شیراز</option>
        <option value="bnd">بندرعباس</option>
        <option value="ahv" disabled>اهواز (به‌زودی)</option>
      </optgroup>
      <optgroup label="شمال و شرق">
        <option value="rsh">رشت</option>
        <option value="mhd" data-keywords="mashhad">مشهد</option>
        <option value="tbz">تبریز</option>
        <option value="krm">کرمان</option>
      </optgroup>
    </select>
  </label>
  <button ui="primary" type="submit">ادامه</button>
</form>

با تایپ فهرست فیلتر می‌شود (ارقام، «ي/ی»، «ك/ک» و نیم‌فاصله یکی گرفته می‌شوند؛ «shiraz» هم با data-keywords پیدا می‌شود). کلیدها: ↓↑، Enter انتخاب، Esc بستن و بازگرداندن مقدار قبلی، Tab خروج. فوکوس همیشه در ورودی می‌ماند و گزینه فعال با aria-activedescendant اعلام می‌شود. اگر گزینه‌ای با مقدار خالی دارید، پاک‌کردن متن انتخاب را پاک می‌کند. متنی که از فهرست انتخاب نشده باشد معتبر نیست و با Enhanced Form خطای فارسی می‌دهد.

فعلاً فقط انتخاب تکی.select multiple دست‌نخورده می‌ماند. برای فهرست‌های بسیار بزرگ یا جست‌وجوی سمت سرور، گزینه‌ها را خودتان به‌روز کنید و Bana.refresh() را بزنید.

ویرایش این صفحه در GitHub