تشکیل می دهد
مثالها و دستورالعملهای استفاده برای سبکهای کنترل فرم، گزینههای طرحبندی، و اجزای سفارشی برای ایجاد طیف گستردهای از فرمها.
کنترلهای فرم Bootstrap در سبکهای فرم Rebooted ما با کلاسها گسترش مییابد. از این کلاسها برای انتخاب نمایشگرهای سفارشیشده آنها برای رندر سازگارتر در مرورگرها و دستگاهها استفاده کنید.
مطمئن شوید که از یک typeویژگی مناسب در همه ورودیها استفاده میکنید (مثلاً emailبرای آدرس ایمیل یا numberاطلاعات عددی) تا از کنترلهای ورودی جدیدتر مانند تأیید ایمیل، انتخاب شماره و موارد دیگر استفاده کنید.
در اینجا یک مثال سریع برای نشان دادن سبک های فرم بوت استرپ آورده شده است. برای مستندات مربوط به کلاس های مورد نیاز، طرح بندی فرم و موارد دیگر به خواندن ادامه دهید.
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
کنترلهای فرم متنی - مانند <input>s، <select>s و <textarea>s - با .form-controlکلاس استایلبندی میشوند. شامل سبک هایی برای ظاهر کلی، حالت فوکوس، اندازه و موارد دیگر است.
حتماً فرمهای سفارشی ما را برای استایل بیشتر بررسی <select>کنید.
<form>
<div class="form-group">
<label for="exampleFormControlInput1">Email address</label>
<input type="email" class="form-control" id="exampleFormControlInput1" placeholder="[email protected]">
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="exampleFormControlSelect1">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect2">Example multiple select</label>
<select multiple class="form-control" id="exampleFormControlSelect2">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlTextarea1">Example textarea</label>
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
</form>
برای ورودی فایل، آن را .form-controlبا .form-control-file.
<form>
<div class="form-group">
<label for="exampleFormControlFile1">Example file input</label>
<input type="file" class="form-control-file" id="exampleFormControlFile1">
</div>
</form>
با استفاده از کلاس هایی مانند .form-control-lgو ارتفاع را تنظیم کنید .form-control-sm.
<input class="form-control form-control-lg" type="text" placeholder=".form-control-lg">
<input class="form-control" type="text" placeholder="Default input">
<input class="form-control form-control-sm" type="text" placeholder=".form-control-sm">
<select class="form-control form-control-lg">
<option>Large select</option>
</select>
<select class="form-control">
<option>Default select</option>
</select>
<select class="form-control form-control-sm">
<option>Small select</option>
</select>
readonlyبرای جلوگیری از تغییر مقدار ورودی�� ویژگی بولی را روی یک ورودی اضافه کنید . ورودیهای فقط خواندنی سبکتر به نظر میرسند (درست مانند ورودیهای غیرفعال)، اما مکاننمای استاندارد را حفظ میکنند.
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
اگر میخواهید <input readonly>عناصری در فرم خود بهصورت متن ساده استایلبندی شده باشند، از .form-control-plaintextکلاس برای حذف استایل پیشفرض فیلد فرم و حفظ حاشیه و بالشتک صحیح استفاده کنید.
<form>
<div class="form-group row">
<label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control-plaintext" id="staticEmail" value="[email protected]">
</div>
</div>
<div class="form-group row">
<label for="inputPassword" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword" placeholder="Password">
</div>
</div>
</form>
<form class="form-inline">
<div class="form-group mb-2">
<label for="staticEmail2" class="sr-only">Email</label>
<input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="[email protected]">
</div>
<div class="form-group mx-sm-3 mb-2">
<label for="inputPassword2" class="sr-only">Password</label>
<input type="password" class="form-control" id="inputPassword2" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary mb-2">Confirm identity</button>
</form>
ورودی های محدوده قابل پیمایش افقی را با استفاده از .form-control-range.
<form>
<div class="form-group">
<label for="formControlRange">Example Range input</label>
<input type="range" class="form-control-range" id="formControlRange">
</div>
</form>
.form-checkچک باکس های پیش فرض و رادیوها با کمک یک کلاس واحد برای هر دو نوع ورودی بهبود می یابند که چیدمان و رفتار عناصر HTML آنها را بهبود می بخشد . چک باکس ها برای انتخاب یک یا چند گزینه در یک لیست هستند، در حالی که رادیوها برای انتخاب یک گزینه از بسیاری از گزینه ها هستند.
چک باکسها و رادیوهای غیرفعال پشتیبانی میشوند، اما برای ارائه not-allowedمکاننما در شناور والد <label>، باید disabledویژگی را به آن اضافه کنید .form-check-input. مشخصه غیرفعال رنگ روشن تری اعمال می کند تا به نشان دادن وضعیت ورودی کمک کند.
چک باکس ها و رادیوها برای پشتیبانی از اعتبارسنجی فرم مبتنی بر HTML و ارائه برچسب های مختصر و قابل دسترس ساخته شده اند. به این ترتیب، <input>s و <label>s ما عناصر خواهر و برادر هستند در مقابل یک <input>درون یک <label>. این کمی پرمخاطب تر است زیرا باید مشخص کنید idو forویژگی هایی را برای مرتبط کردن <input>و <label>.
بهطور پیشفرض، هر تعدادی از چک باکسها و رادیوهایی که خواهر و برادر فوری هستند به صورت عمودی روی هم قرار میگیرند و با فاصله مناسب با هم قرار .form-checkمیگیرند.
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Default checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
<label class="form-check-label" for="defaultCheck2">
Disabled checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
Default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
<label class="form-check-label" for="exampleRadios2">
Second default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
<label class="form-check-label" for="exampleRadios3">
Disabled radio
</label>
</div>
کادرهای انتخاب یا رادیوها را در همان ردیف افقی با افزودن .form-check-inlineبه هر یک گروه بندی کنید .form-check.
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
<label class="form-check-label" for="inlineCheckbox1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2">
<label class="form-check-label" for="inlineCheckbox2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled>
<label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
<label class="form-check-label" for="inlineRadio1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
<label class="form-check-label" for="inlineRadio2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled>
<label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
</div>
.position-staticبه ورودیهایی اضافه کنید .form-checkکه متن برچسبی ندارند. به یاد داشته باشید که هنوز نوعی برچسب برای فناوری های کمکی ارائه دهید (به عنوان مثال، استفاده از aria-label).
<div class="form-check">
<input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
</div>
<div class="form-check">
<input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
</div>
از آنجایی که Bootstrap display: blockو width: 100%تقریباً برای همه کنترلهای فرم ما اعمال میشود، فرمها بهطور پیشفرض به صورت عمودی قرار میگیرند. می توان از کلاس های اضافی برای تغییر این طرح بر اساس هر فرم استفاده کرد.
کلاس .form-groupساده ترین راه برای افزودن ساختار به فرم ها است. یک کلاس منعطف ارائه میکند که گروهبندی مناسب برچسبها، کنترلها، متن راهنما اختیاری و پیامهای تایید فرم را تشویق میکند. به طور پیشفرض فقط اعمال margin-bottomمیشود، اما در .form-inlineصورت نیاز، سبکهای اضافی را انتخاب میکند. از آن با <fieldset>s، <div>s یا تقریباً هر عنصر دیگری استفاده کنید.
<form>
<div class="form-group">
<label for="formGroupExampleInput">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
</div>
</form>
فرم های پیچیده تری را می توان با استفاده از کلاس های گرید ما ساخت. از این ها برای طرح بندی فرم هایی که نیاز به ستون های متعدد، عرض های متنوع و گزینه های تراز اضافی دارند استفاده کنید.
<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
همچنین میتوانید با .row، .form-rowتغییری از ردیف شبکه استاندارد ما که ناودان ستونهای پیشفرض را برای طرحبندیهای فشردهتر و فشردهتر جایگزین میکند.
<form>
<div class="form-row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
طرحبندیهای پیچیدهتری را نیز میتوان با سیستم شبکه ایجاد کرد.
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
</div>
<div class="form-group">
<label for="inputAddress">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
<div class="form-group">
<label for="inputAddress2">Address 2</label>
<input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputCity">City</label>
<input type="text" class="form-control" id="inputCity">
</div>
<div class="form-group col-md-4">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-2">
<label for="inputZip">Zip</label>
<input type="text" class="form-control" id="inputZip">
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
.rowبا افزودن کلاس برای تشکیل گروه ها و استفاده از .col-*-*کلاس ها برای تعیین عرض برچسب ها و کنترل های خود، فرم های افقی را با شبکه ایجاد کنید. حتماً به s .col-form-labelخود <label>نیز اضافه کنید تا به صورت عمودی با کنترلهای فرم مرتبط خود در مرکز قرار گیرند.
گاهی اوقات، ممکن است لازم باشد از ابزارهای حاشیه یا padding استفاده کنید تا تراز کامل مورد نیاز خود را ایجاد کنید. به عنوان مثال، ما padding-topبرچسب ورودی های رادیویی انباشته خود را حذف کرده ایم تا خط پایه متن را بهتر تراز کنیم.
<form>
<div class="form-group row">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3" placeholder="Email">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3" placeholder="Password">
</div>
</div>
<fieldset class="form-group">
<div class="row">
<legend class="col-form-label col-sm-2 pt-0">Radios</legend>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
<label class="form-check-label" for="gridRadios1">
First radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
<label class="form-check-label" for="gridRadios2">
Second radio
</label>
</div>
<div class="form-check disabled">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
<label class="form-check-label" for="gridRadios3">
Third disabled radio
</label>
</div>
</div>
</div>
</fieldset>
<div class="form-group row">
<div class="col-sm-2">Checkbox</div>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck1">
<label class="form-check-label" for="gridCheck1">
Example checkbox
</label>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Sign in</button>
</div>
</div>
</form>
حتماً از .col-form-label-smیا .col-form-label-lgبه <label>s یا s خود استفاده کنید تا اندازه و <legend>را به درستی دنبال کنید ..form-control-lg.form-control-sm
<form>
<div class="form-group row">
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
</div>
</div>
<div class="form-group row">
<label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
</div>
</div>
<div class="form-group row">
<label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
</div>
</div>
</form>
همانطور که در مثال های قبلی نشان داده شد، سیستم شبکه ما به شما امکان می دهد هر تعداد .cols را در یک .rowیا قرار دهید .form-row. آنها عرض موجود را به طور مساوی بین خود تقسیم می کنند. همچنین میتوانید زیرمجموعهای از ستونهای خود را انتخاب کنید تا فضای کمتر یا بیشتر را اشغال کند، در حالی که باقیماندهها .colبقیه را با کلاسهای ستونی خاص مانند .col-7.
<form>
<div class="form-row">
<div class="col-7">
<input type="text" class="form-control" placeholder="City">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="State">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Zip">
</div>
</div>
</form>
مثال زیر از یک ابزار flexbox استفاده میکند تا محتویات را به صورت عمودی در مرکز قرار دهد و آن را تغییر دهد .colتا .col-autoستونهای شما فقط به اندازهای که فضای لازم را اشغال کنند. به عبارت دیگر، ستون خود را بر اساس محتویات اندازه می گیرد.
<form>
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="inlineFormInput">Name</label>
<input type="text" class="form-control mb-2" id="inlineFormInput" placeholder="Jane Doe">
</div>
<div class="col-auto">
<label class="sr-only" for="inlineFormInputGroup">Username</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Username">
</div>
</div>
<div class="col-auto">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="autoSizingCheck">
<label class="form-check-label" for="autoSizingCheck">
Remember me
</label>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</div>
</div>
</form>
سپس میتوانید آن را یک بار دیگر با کلاسهای ستونی با اندازه خاص، مجدداً مخلوط کنید.
<form>
<div class="form-row align-items-center">
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputName">Name</label>
<input type="text" class="form-control" id="inlineFormInputName" placeholder="Jane Doe">
</div>
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputGroupUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
</div>
</div>
<div class="col-auto my-1">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="autoSizingCheck2">
<label class="form-check-label" for="autoSizingCheck2">
Remember me
</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
و البته کنترل های فرم سفارشی پشتیبانی می شوند.
<form>
<div class="form-row align-items-center">
<div class="col-auto my-1">
<label class="mr-sm-2 sr-only" for="inlineFormCustomSelect">Preference</label>
<select class="custom-select mr-sm-2" id="inlineFormCustomSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-auto my-1">
<div class="custom-control custom-checkbox mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlAutosizing">
<label class="custom-control-label" for="customControlAutosizing">Remember my preference</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
از .form-inlineکلاس برای نمایش مجموعه ای از برچسب ها، کنترل های فرم و دکمه ها در یک ردیف افقی استفاده کنید. کنترلهای فرم در فرمهای درون خطی کمی از حالتهای پیشفرض آنها متفاوت است.
- کنترلها عبارتند از
display: flex، هر فضای سفید HTML را جمع میکنند و به شما امکان میدهند کنترل تراز را با ابزارهای فاصله و flexbox ارائه دهید . - کنترلها و گروههای ورودی
width: autoبرای لغو پیشفرض Bootstrap دریافت میکنندwidth: 100%. - کنترلها فقط در ویوپورتهایی بهخط ظاهر میشوند که حداقل 576 پیکسل عرض دارند تا درگاههای دید باریک در دستگاههای تلفن همراه را در نظر بگیرند.
ممکن است لازم باشد به صورت دستی عرض و تراز کنترلهای فرم را با ابزارهای فاصله (مانند شکل زیر) بررسی کنید. در نهایت، مطمئن شوید که همیشه یک علامت را <label>با هر کنترل فرم اضافه کنید، حتی اگر لازم است آن را از بازدیدکنندگان غیرصفحهخوان پنهان کنید .sr-only.
<form class="form-inline">
<label class="sr-only" for="inlineFormInputName2">Name</label>
<input type="text" class="form-control mb-2 mr-sm-2" id="inlineFormInputName2" placeholder="Jane Doe">
<label class="sr-only" for="inlineFormInputGroupUsername2">Username</label>
<div class="input-group mb-2 mr-sm-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Username">
</div>
<div class="form-check mb-2 mr-sm-2">
<input class="form-check-input" type="checkbox" id="inlineFormCheck">
<label class="form-check-label" for="inlineFormCheck">
Remember me
</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</form>
کنترلها و انتخابهای فرم سفارشی نیز پشتیبانی میشوند.
<form class="form-inline">
<label class="my-1 mr-2" for="inlineFormCustomSelectPref">Preference</label>
<select class="custom-select my-1 mr-sm-2" id="inlineFormCustomSelectPref">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="custom-control custom-checkbox my-1 mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlInline">
<label class="custom-control-label" for="customControlInline">Remember my preference</label>
</div>
<button type="submit" class="btn btn-primary my-1">Submit</button>
</form>
جایگزین هایی برای برچسب های پنهان
اگر برای هر ورودی برچسبی وارد نکنید، فناوریهای کمکی مانند صفحهخوانها با فرمهای شما مشکل خواهند داشت. برای این فرمهای درون خطی، میتوانید برچسبها را با استفاده از .sr-onlyکلاس پنهان کنید. روشهای جایگزین دیگری برای ارائه برچسب برای فناوریهای کمکی، مانند aria-labelویژگی aria-labelledbyیا titleویژگی وجود دارد. اگر هیچ یک از اینها وجود نداشته باشد، فناوری های کمکی ممکن است به استفاده از placeholderویژگی متوسل شوند، در صورت وجود، اما توجه داشته باشید که استفاده از آن placeholderبه عنوان جایگزینی برای سایر روش های برچسب گذاری توصیه نمی شود.
متن راهنما در سطح بلوک در فرم ها را می توان با استفاده از .form-text(که قبلاً در نسخه 3 شناخته می .help-blockشد) ایجاد کرد. متن راهنمای درون خطی را می توان با استفاده از هر عنصر HTML درون خطی و کلاس های کاربردی مانند .text-muted.
ارتباط متن راهنما با کنترلهای فرم
متن راهنما باید صریحاً با کنترل فرم مربوط به استفاده از aria-describedbyویژگی مرتبط باشد. این اطمینان حاصل می کند که فناوری های کمکی - مانند صفحه خوان ها - این متن راهنما را هنگامی که کاربر تمرکز می کند یا وارد کنترل می شود، اعلام می کند.
متن راهنما زیر ورودی ها را می توان با استایل دهی کرد .form-text. این کلاس شامل display: blockو اضافه کردن حاشیه بالا برای فاصله آسان از ورودی های بالا.
<label for="inputPassword5">Password</label>
<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
<small id="passwordHelpBlock" class="form-text text-muted">
Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
</small>
متن درون خطی می تواند از هر عنصر HTML درون خطی معمولی (خواه یک <small>, <span>یا چیز دیگری) با چیزی بیشتر از یک کلاس کاربردی استفاده کند.
<form class="form-inline">
<div class="form-group">
<label for="inputPassword6">Password</label>
<input type="password" id="inputPassword6" class="form-control mx-sm-3" aria-describedby="passwordHelpInline">
<small id="passwordHelpInline" class="text-muted">
Must be 8-20 characters long.
</small>
</div>
</form>
disabledبرای جلوگیری از تعامل کاربر و سبکتر نشان دادن آن، ویژگی بولین را روی ورودی اضافه کنید.
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
برای غیرفعال کردن تمام کنترلهای داخل ، disabledویژگی را به a اضافه کنید.<fieldset>
<form>
<fieldset disabled>
<div class="form-group">
<label for="disabledTextInput">Disabled input</label>
<input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
</div>
<div class="form-group">
<label for="disabledSelect">Disabled select menu</label>
<select id="disabledSelect" class="form-control">
<option>Disabled select</option>
</select>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
<label class="form-check-label" for="disabledFieldsetCheck">
Can't check this
</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</fieldset>
</form>
اخطار با لنگرها
بهطور پیشفرض، مرورگرها تمام کنترلهای فرم ( <input>و عناصر) داخل a را غیرفعال میکنند <select>و از تعاملات صفحهکلید و ماوس روی آنها جلوگیری میکنند. با این حال، اگر فرم شما شامل عناصر نیز باشد، به آنها فقط سبکی از . همانطور که در بخش مربوط به حالت غیرفعال برای دکمهها (و به طور خاص در بخش فرعی عناصر لنگر) ذکر شد، این ویژگی CSS هنوز استاندارد نشده است و به طور کامل در اینترنت اکسپلورر 10 پشتیبانی نمیشود، و مانع از دسترسی کاربران صفحهکلید نمیشود. قادر به تمرکز یا فعال کردن این پیوندها است. بنابراین برای ایمن بودن، از جاوا اسکریپت سفارشی برای غیرفعال کردن چنین پیوندهایی استفاده کنید.<button><fieldset disabled><a ... class="btn btn-*">pointer-events: none
سازگاری بین مرورگرها
در حالی که بوت استرپ این سبکها را در همه مرورگرها اعمال میکند، اینترنت اکسپلورر 11 و پایینتر به طور کامل از disabledویژگی روی یک پشتیبانی نمیکند <fieldset>. از جاوا اسکریپت سفارشی برای غیرفعال کردن مجموعه فیلدها در این مرورگرها استفاده کنید.
با اعتبارسنجی فرم HTML5 بازخورد ارزشمند و قابل اجرا را به کاربران خود ارائه دهید - در همه مرورگرهای پشتیبانی شده ما موجود است. بازخورد اعتبارسنجی پیشفرض مرورگر را انتخاب کنید یا پیامهای سفارشی را با کلاسهای داخلی و جاوا اسکریپت شروعکننده پیادهسازی کنید.
ما در حال حاضر استفاده از سبکهای اعتبارسنجی سفارشی را توصیه میکنیم، زیرا پیامهای تأیید اعتبار پیشفرض مرورگر بومی به طور مداوم در معرض فناوریهای کمکی در همه مرورگرها (به ویژه Chrome در رایانه رومیزی و تلفن همراه) قرار نمیگیرند.
در اینجا نحوه عملکرد اعتبار فرم با بوت استرپ آمده است:
- اعتبار سنجی فرم HTML از طریق دو کلاس شبه CSS
:invalidو:valid. برای عناصر<input>،،<select>و کاربرد<textarea>دارد. - بوت استرپ دامنه
:invalidو:validاستایل ها را به کلاس والد.was-validated، که معمولاً برای کلاس اعمال می شود، اعمال می کند<form>. در غیر این صورت، هر فیلد الزامی بدون مقدار در بارگذاری صفحه نامعتبر نشان داده می شود. به این ترتیب، می توانید انتخاب کنید که چه زمانی آنها را فعال کنید (معمولاً پس از ارسال فرم). - برای بازنشانی ظاهر فرم (به عنوان مثال، در مورد ارسالهای فرم پویا با استفاده از AJAX)، پس از ارسال دوباره
.was-validatedکلاس را از کلاس حذف کنید.<form> - به عنوان یک بازگشت،
.is-invalidو.is-validکلاس ها ممکن است به جای شبه کلاس ها برای اعتبارسنجی سمت سرور استفاده شوند. آنها نیازی به.was-validatedکلاس والدین ندارند. - به دلیل محدودیتهایی که در نحوه عملکرد CSS وجود دارد، ما نمیتوانیم (در حال حاضر) سبکهایی را
<label>که قبل از کنترل فرم در DOM قرار میگیرد بدون کمک جاوا اسکریپت سفارشی اعمال کنیم. - همه مرورگرهای مدرن از API اعتبارسنجی محدودیت پشتیبانی میکنند، مجموعهای از روشهای جاوا اسکریپت برای اعتبارسنجی کنترلهای فرم.
- پیامهای بازخورد ممکن است از پیشفرضهای مرورگر (برای هر مرورگر متفاوت، و از طریق CSS غیرقابل استایل) یا سبکهای بازخورد سفارشی ما با HTML و CSS اضافی استفاده کنند.
- می توانید پیام های اعتبار سفارشی را
setCustomValidityدر جاوا اسکریپت ارائه دهید.
با در نظر گرفتن این موضوع، دموهای زیر را برای سبکهای اعتبارسنجی فرم سفارشی، کلاسهای سمت سرور اختیاری و پیشفرضهای مرورگر در نظر بگیرید.
برای پیامهای اعتبارسنجی فرم بوت استرپ سفارشی، باید novalidateویژگی بولین را به خود اضافه کنید <form>. با این کار نکات ابزار بازخورد پیشفرض مرورگر غیرفعال میشود، اما همچنان دسترسی به APIهای تأیید فرم در جاوا اسکریپت را فراهم میکند. سعی کنید فرم زیر را ارسال کنید؛ جاوا اسکریپت ما دکمه ارسال را قطع می کند و بازخورد را به شما ارسال می کند.
هنگام تلاش برای ارسال، سبکها :invalidو :validسبکهای اعمال شده روی کنترلهای فرم خود را مشاهده خواهید کرد.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationCustom01">First name</label>
<input type="text" class="form-control" id="validationCustom01" placeholder="First name" value="Mark" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustom02">Last name</label>
<input type="text" class="form-control" id="validationCustom02" placeholder="Last name" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationCustomUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend">@</span>
</div>
<input type="text" class="form-control" id="validationCustomUsername" placeholder="Username" aria-describedby="inputGroupPrepend" required>
<div class="invalid-feedback">
Please choose a username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationCustom03">City</label>
<input type="text" class="form-control" id="validationCustom03" placeholder="City" required>
<div class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom04">State</label>
<input type="text" class="form-control" id="validationCustom04" placeholder="State" required>
<div class="invalid-feedback">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom05">Zip</label>
<input type="text" class="form-control" id="validationCustom05" placeholder="Zip" required>
<div class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="invalidCheck" required>
<label class="form-check-label" for="invalidCheck">
Agree to terms and conditions
</label>
<div class="invalid-feedback">
You must agree before submitting.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
<script>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
'use strict';
window.addEventListener('load', function() {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
علاقه ای به پیام های بازخورد تأیید اعتبار سفارشی یا نوشتن جاوا اسکریپت برای تغییر رفتارهای فرم ندارید؟ خیلی خوب است، می توانید از پیش فرض های مرورگر استفاده کنید. سعی کنید فرم زیر را ارسال کنید. بسته به مرورگر و سیستم عامل خود، سبک کمی متفاوت از بازخورد را مشاهده خواهید کرد.
در حالی که این سبکهای بازخورد را نمیتوان با CSS سبکسازی کرد، همچنان میتوانید متن بازخورد را از طریق جاوا اسکریپت سفارشی کنید.
<form>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationDefault01">First name</label>
<input type="text" class="form-control" id="validationDefault01" placeholder="First name" value="Mark" required>
</div>
<div class="col-md-4 mb-3">
<label for="validationDefault02">Last name</label>
<input type="text" class="form-control" id="validationDefault02" placeholder="Last name" value="Otto" required>
</div>
<div class="col-md-4 mb-3">
<label for="validationDefaultUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend2">@</span>
</div>
<input type="text" class="form-control" id="validationDefaultUsername" placeholder="Username" aria-describedby="inputGroupPrepend2" required>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationDefault03">City</label>
<input type="text" class="form-control" id="validationDefault03" placeholder="City" required>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault04">State</label>
<input type="text" class="form-control" id="validationDefault04" placeholder="State" required>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault05">Zip</label>
<input type="text" class="form-control" id="validationDefault05" placeholder="Zip" required>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="invalidCheck2" required>
<label class="form-check-label" for="invalidCheck2">
Agree to terms and conditions
</label>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
توصیه می کنیم از اعتبار سنجی سمت مشتری استفاده کنید، اما در صورت نیاز به سمت سرور، می توانید فیلدهای فرم نامعتبر و معتبر را با .is-invalidو نشان دهید .is-valid. توجه داشته باشید که .invalid-feedbackبا این کلاس ها نیز پشتیبانی می شود.
<form>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationServer01">First name</label>
<input type="text" class="form-control is-valid" id="validationServer01" placeholder="First name" value="Mark" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationServer02">Last name</label>
<input type="text" class="form-control is-valid" id="validationServer02" placeholder="Last name" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationServerUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupPrepend3">@</span>
</div>
<input type="text" class="form-control is-invalid" id="validationServerUsername" placeholder="Username" aria-describedby="inputGroupPrepend3" required>
<div class="invalid-feedback">
Please choose a username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationServer03">City</label>
<input type="text" class="form-control is-invalid" id="validationServer03" placeholder="City" required>
<div class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer04">State</label>
<input type="text" class="form-control is-invalid" id="validationServer04" placeholder="State" required>
<div class="invalid-feedback">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer05">Zip</label>
<input type="text" class="form-control is-invalid" id="validationServer05" placeholder="Zip" required>
<div class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input is-invalid" type="checkbox" value="" id="invalidCheck3" required>
<label class="form-check-label" for="invalidCheck3">
Agree to terms and conditions
</label>
<div class="invalid-feedback">
You must agree before submitting.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
فرمهای مثال ما s متنی بومی را <input>در بالا نشان میدهند، اما سبکهای اعتبارسنجی فرم برای کنترلهای فرم سفارشی ما نیز موجود است.
<form class="was-validated">
<div class="custom-control custom-checkbox mb-3">
<input type="checkbox" class="custom-control-input" id="customControlValidation1" required>
<label class="custom-control-label" for="customControlValidation1">Check this custom checkbox</label>
<div class="invalid-feedback">Example invalid feedback text</div>
</div>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" id="customControlValidation2" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation2">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio mb-3">
<input type="radio" class="custom-control-input" id="customControlValidation3" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation3">Or toggle this other custom radio</label>
<div class="invalid-feedback">More example invalid feedback text</div>
</div>
<div class="form-group">
<select class="custom-select" required>
<option value="">Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="invalid-feedback">Example invalid custom select feedback</div>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="validatedCustomFile" required>
<label class="custom-file-label" for="validatedCustomFile">Choose file...</label>
<div class="invalid-feedback">Example invalid custom file feedback</div>
</div>
</form>
اگر طرحبندی فرم شما اجازه میدهد، میتوانید کلاسها را با .{valid|invalid}-feedbackکلاسها تعویض کنید .{valid|invalid}-tooltipتا بازخورد اعتبارسنجی را در یک راهنمای ابزار سبکدهی شده نشان دهید. حتماً یک والد position: relativeبرای موقعیتیابی راهنمای ابزار همراه داشته باشید. در مثال زیر، کلاسهای ستون ما قبلاً این مورد را دارند، اما پروژه شما ممکن است به یک راهاندازی جایگزین نیاز داشته باشد.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-4 mb-3">
<label for="validationTooltip01">First name</label>
<input type="text" class="form-control" id="validationTooltip01" placeholder="First name" value="Mark" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltip02">Last name</label>
<input type="text" class="form-control" id="validationTooltip02" placeholder="Last name" value="Otto" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
<div class="col-md-4 mb-3">
<label for="validationTooltipUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="validationTooltipUsernamePrepend">@</span>
</div>
<input type="text" class="form-control" id="validationTooltipUsername" placeholder="Username" aria-describedby="validationTooltipUsernamePrepend" required>
<div class="invalid-tooltip">
Please choose a unique and valid username.
</div>
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationTooltip03">City</label>
<input type="text" class="form-control" id="validationTooltip03" placeholder="City" required>
<div class="invalid-tooltip">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip04">State</label>
<input type="text" class="form-control" id="validationTooltip04" placeholder="State" required>
<div class="invalid-tooltip">
Please provide a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip05">Zip</label>
<input type="text" class="form-control" id="validationTooltip05" placeholder="Zip" required>
<div class="invalid-tooltip">
Please provide a valid zip.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
برای سفارشی سازی بیشتر و سازگاری بین مرورگرها، از عناصر فرم کاملاً سفارشی ما برای جایگزینی پیش فرض های مرورگر استفاده کنید. آنها بر روی نشانهگذاری معنایی و قابل دسترس ساخته شدهاند، بنابراین جایگزینی محکم برای هر گونه کنترل فرم پیشفرض هستند.
<div>هر چک باکس و رادیو با یک خواهر یا برادر <span>برای ایجاد کنترل سفارشی ما و یک علامت <label>برای متن همراه پیچیده شده است. از نظر ساختاری، این همان رویکرد پیش فرض ما .form-checkاست.
ما از انتخابگر خواهر و برادر ( ~) برای همه <input>حالت های خود استفاده می کنیم - مانند - تا :checkedبه درستی نشانگر فرم سفارشی خود را استایل بندی کنیم. هنگامی که با .custom-control-labelکلاس ترکیب میشویم، میتوانیم متن را برای هر آیتم بر اساس وضعیت <input>' استایل دهی کنیم.
<input>پیش فرض را با مخفی می کنیم opacityو .custom-control-labelبرای ساختن یک نشانگر فرم سفارشی جدید در جای خود با ::beforeو ::afterاستفاده می کنیم. متأسفانه ما نمیتوانیم یک سفارشی فقط از آن بسازیم <input>زیرا CSS contentروی آن عنصر کار نمیکند.
در حالتهای علامتگذاری شده، از نمادهای SVG تعبیهشده base64 از Open Iconic استفاده میکنیم. این بهترین کنترل را برای استایل و موقعیت یابی در مرورگرها و دستگاه ها در اختیار ما قرار می دهد.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck1">
<label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
</div>
چک باکس های سفارشی همچنین می توانند از :indeterminateکلاس شبه استفاده کنند که به صورت دستی از طریق جاوا اسکریپت تنظیم شود (هیچ ویژگی HTML موجود برای تعیین آن وجود ندارد).
اگر از jQuery استفاده می کنید، چیزی شبیه به این کافی است:
$('.your-checkbox').prop('indeterminate', true)
<div class="custom-control custom-radio">
<input type="radio" id="customRadio1" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="customRadio2" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio2">Or toggle this other custom radio</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline1" name="customRadioInline1" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline2" name="customRadioInline1" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline2">Or toggle this other custom radio</label>
</div>
چک باکس های سفارشی و رادیوها نیز می توانند غیرفعال شوند. disabledویژگی Boolean را به آن اضافه کنید <input>و نشانگر سفارشی و توضیحات برچسب به طور خودکار استایل دهی می شود.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheckDisabled" disabled>
<label class="custom-control-label" for="customCheckDisabled">Check this custom checkbox</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="radio3" name="radioDisabled" id="customRadioDisabled" class="custom-control-input" disabled>
<label class="custom-control-label" for="customRadioDisabled">Toggle this custom radio</label>
</div>
منوهای سفارشی <select>فقط به یک کلاس سفارشی نیاز دارند .custom-selectتا سبک های سفارشی را فعال کنند. سبک های سفارشی به <select>ظاهر اولیه محدود می شوند و <option>به دلیل محدودیت های مرورگر نمی توانند s را تغییر دهند.
<select class="custom-select">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
همچنین میتوانید از میان انتخابهای سفارشی کوچک و بزرگ انتخاب کنید تا با ورودیهای متنی با اندازه مشابه مطابقت داشته باشد.
<select class="custom-select custom-select-lg mb-3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="custom-select custom-select-sm">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
ویژگی multipleنیز پشتیبانی می شود:
<select class="custom-select" multiple>
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
همانطور که sizeویژگی است:
<select class="custom-select" size="3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<input type="range">ایجاد کنترل های سفارشی .custom-rangeبا آهنگ (پس زمینه) و انگشت شست (مقدار) هر دو به گونه ای طراحی شده اند که در مرورگرها یکسان ظاهر شوند. از آنجایی که فقط اینترنت اکسپلورر و فایرفاکس از "پر کردن" مسیر خود از سمت چپ یا راست انگشت شست به عنوان وسیله ای برای نشان دادن بصری پیشرفت پشتیبانی می کنند، ما در حال حاضر از آن پشتیبانی نمی کنیم.
<label for="customRange1">Example range</label>
<input type="range" class="custom-range" id="customRange1">
ورودی های محدوده دارای مقادیر ضمنی برای minو max— 0و 100هستند. شما می توانید مقادیر جدیدی را برای کسانی که از ویژگی های minand استفاده می کنند تعیین کنید max.
<label for="customRange2">Example range</label>
<input type="range" class="custom-range" min="0" max="5" id="customRange2">
به طور پیش فرض، محدوده ورودی "snap" را به مقادیر صحیح وارد می کند. برای تغییر این می توانید stepمقداری را مشخص کنید. در مثال زیر تعداد مراحل را با استفاده از 2 برابر می کنیم step="0.5".
<label for="customRange3">Example range</label>
<input type="range" class="custom-range" min="0" max="5" step="0.5" id="customRange3">
ورودی فایل در میان دستهای است که به جاوا اسکریپت اضافی نیاز دارد، اگر میخواهید آنها را با انتخاب فایل کاربردی… و متن نام فایل انتخابشده وصل کنید.
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
فایل پیش فرض را <input>از طریق مخفی می کنیم opacityو به جای آن به آن استایل می دهیم <label>. دکمه تولید و با ::after. در نهایت، ما a widthand heighton را <input>برای فاصله مناسب برای محتوای اطراف اعلام می کنیم.
شبه :lang()کلاس برای امکان ترجمه متن "مرور" به زبان های دیگر استفاده می شود. با تگ زبان مربوطه و رشته های محلی شده، ورودی ها را به $custom-file-textمتغیر Sass لغو یا اضافه کنید . رشته های انگلیسی را می توان به همان روش سفارشی کرد. به عنوان مثال، در اینجا نحوه اضافه کردن ترجمه اسپانیایی (کد زبان اسپانیایی این است ):es
$custom-file-text: (
en: "Browse",
es: "Elegir"
);
در اینجا lang(es)در مورد ورودی فایل سفارشی برای ترجمه اسپانیایی آمده است:
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFileLang" lang="es">
<label class="custom-file-label" for="customFileLang">Seleccionar Archivo</label>
</div>
برای اینکه متن صحیح نشان داده شود، باید زبان سند خود (یا زیردرخت آن) را به درستی تنظیم کنید. این را می توان با استفاده از langویژگی روی <html>عنصر یا Content-Languageهدر HTTP در میان روش های دیگر انجام داد.