پرسش

اعتبارسنجی در بوت‌استرپ ۵ کار نمی‌کنه، مشکل از کجاست؟

Can\'t make the validation work in Bootstrap

سلام! من دارم از فرم‌ های بوت‌استرپ ۵ استفاده میکنم و میخوام از اعتبارسنجی‌ های پیش‌فرض اون استفاده کنم. ولی هر کاری میکنم، اعتبارسنجی کار نمیکنه و هیچ اروری نشون داده نمیشه. من از HTML استاندارد با کلاس‌های بوت‌ استرپ استفاده کردم ولی باز هم مشکلم حل نشد. چطور اعتبارسنجی رو درست کنم؟ باید کد جاوااسکریپت خاصی اضافه کنم؟

1403/06/03
پاسخ

سلام این مشکل بیشتر اوقات به خاطر اینه که جاوا اسکریپت مربوط به اعتبارسنجی بوت‌استرپ ۵ رو درست لود نکردی یا اینکه به درستی اجرا نشده. بوت‌ استرپ ۵ برای اعتبارسنجی فرم‌ ها از جاوااسکریپت استفاده میکنه، پس باید مطمئن بشی که کدهای جاوااسکریپت به درستی اجرا میشن.

برای اینکه اعتبارسنجی بوت‌ استرپ کار کنه، باید این موارد رو چک کنی

اول مطمئن شو که جاوا اسکریپت بوت‌ استرپ به درستی توی پروژه‌ت لود شده. این کار رو میتونی با اضافه کردن لینک جاوا اسکریپت بوت‌استرپ ۵ به اخرbody توی فایل HTML انجام بدی

<!-- Bootstrap JavaScript Bundle (includes Popper) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

بغد باید مطمئن شی که فرم رو به درستی با کلاس‌های اعتبارسنجی بوت‌ استرپ استفاده کردی. نمونه کد HTML فرم باید چیزی شبیه به این باشه

<form class="needs-validation" novalidate>
  <div class="mb-3">
    <label for="exampleInput" class="form-label">Example label</label>
    <input type="text" class="form-control" id="exampleInput" required>
    <div class="invalid-feedback">
      Please provide a valid input.
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

بوت‌استرپ ۵ نیاز داره که یک مقدار جاوا اسکریپت برای فعال کردن اعتبارسنجی فرم‌ ها اضافه کنی. این کد باید بعد از لود شدن کامل صفحه اجرا بشه

// Example starter JavaScript for disabling form submissions if there are invalid fields
(function () {
  'use strict'
  // Fetch all the forms we want to apply custom Bootstrap validation styles to
  var forms = document.querySelectorAll('.needs-validation')
  // Loop over them and prevent submission
  Array.prototype.slice.call(forms).forEach(function (form) {
      form.addEventListener('submit', function (event) {
        if (!form.checkValidity()) {
          event.preventDefault()
          event.stopPropagation()
        }
        form.classList.add('was-validated')
      }, false)
    })
})()

این کد جاوا اسکریپت باعث میشه که وقتی فرم سابمیت میشه، اگه هر کدوم از فیلدها نامعتبر باشن، فرم سابمیت نشه و کلاس was-validated به فرم اضافه بشه که باعث نمایش پیام‌های خطا میشه.

اگه میخوای اعتبارسنجی مرورگر هم کار کنه، خاصیت novalidate رو از تگ <form> بردار. اما اگه فقط میخوای اعتبارسنجی بوت‌استرپ استفاده بشه، این خاصیت رو نگه دار.

پاسخ: 1403/06/03
آخرین آپدیت: 1403/08/01