Bootstrap 4 บทช่วยสอน

BS4 HOME BS4 เริ่มต้น BS4 คอนเทนเนอร์ BS4 Grid Basic BS4 วิชาการพิมพ์ BS4 สี ตาราง BS4 BS4 รูปภาพ BS4 Jumbotron การแจ้งเตือน BS4 ปุ่ม BS4 กลุ่มปุ่ม BS4 ป้าย BS4 แถบความคืบหน้า BS4 BS4 Spinners BS4 การแบ่งหน้า BS4 รายการกลุ่ม การ์ด BS4 BS4 ดรอปดาวน์ BS4 ยุบ BS4 Navs BS4 Navbar แบบฟอร์ม BS4 อินพุต BS4 กลุ่มอินพุต BS4 BS4 แบบฟอร์มที่กำหนดเอง BS4 ม้าหมุน BS4 โมดอล เคล็ดลับเครื่องมือ BS4 BS4 ป๊อปโอเวอร์ BS4 ขนมปังปิ้ง BS4 Scrollspy BS4 ยูทิลิตี้ BS4 Flex ไอคอน BS4 วัตถุสื่อ BS4 ตัวกรอง BS4

Bootstrap 4 Grid

ระบบกริด BS4 BS4 ซ้อน/แนวนอน BS4 Grid XSmall BS4 กริดขนาดเล็ก BS4 กริดขนาดกลาง BS4 กริดขนาดใหญ่ BS4 Grid XLarge ตัวอย่างกริด BS4

Bootstrap 4 อื่นๆ

เทมเพลตพื้นฐาน BS4 แบบฝึกหัด BS4 แบบทดสอบ BS4

Bootstrap 4 อ้างอิง

ทุกชั้นเรียน JS Alert ปุ่ม JS JS Carousel JS ยุบ JS Dropdown JS Modal JS Popover JS Scrollspy JS แท็บ JS Toasts JS Tooltip


Bootstrap 4 แบบฟอร์ม


การตั้งค่าเริ่มต้นของ Bootstrap 4

ตัวควบคุมฟอร์มจะได้รับสไตล์โกลบอลบางส่วนโดยอัตโนมัติด้วย Bootstrap:

ข้อความทั้งหมด<input>, <textarea>, และ <select>องค์ประกอบที่มีคลาส.form-controlมีความกว้าง 100%


Bootstrap 4 เค้าโครงแบบฟอร์ม

Bootstrap มีเค้าโครงแบบฟอร์มสองประเภท:

  • แบบซ้อน (เต็มความกว้าง)
  • แบบฟอร์มอินไลน์

Bootstrap 4 แบบฟอร์มซ้อน

ตัวอย่างต่อไปนี้จะสร้างแบบฟอร์มแบบเรียงซ้อนที่มีช่องใส่ข้อมูลสองช่อง ช่องทำเครื่องหมายหนึ่งช่อง และปุ่มส่ง

เพิ่มองค์ประกอบ wrapper ด้วย.form-group, รอบๆ ส่วนควบคุมแต่ละแบบฟอร์ม เพื่อให้แน่ใจว่ามีระยะขอบที่เหมาะสม:

ตัวอย่าง

<form action="/action_page.php">
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" placeholder="Enter email" id="email">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" placeholder="Enter password" id="pwd">
  </div>
  <div class="form-group form-check">
    <label class="form-check-label">
      <input class="form-check-input" type="checkbox"> Remember me
    </label>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

Bootstrap แบบฟอร์มอินไลน์

ในรูปแบบอินไลน์ องค์ประกอบทั้งหมดเป็นแบบอินไลน์และชิดซ้าย

หมายเหตุ: ใช้ได้เฉพาะกับฟอร์มภายในวิวพอร์ตที่มีความกว้างอย่างน้อย 576px บนหน้าจอที่มีขนาดเล็กกว่า 576px จะวางซ้อนกันในแนวนอน

กฎเพิ่มเติมสำหรับแบบฟอร์มอินไลน์:

  • เพิ่มคลาส.form-inlineให้กับ<form>องค์ประกอบ

ตัวอย่างต่อไปนี้จะสร้างแบบฟอร์มอินไลน์ที่มีช่องใส่สองช่อง ช่องทำเครื่องหมายหนึ่งช่อง และปุ่มส่งหนึ่งปุ่ม:

ตัวอย่าง

<form class="form-inline" action="/action_page.php">
  <label for="email">Email address:</label>
  <input type="email" class="form-control" placeholder="Enter email" id="email">
  <label for="pwd">Password:</label>
  <input type="password" class="form-control" placeholder="Enter password" id="pwd">
  <div class="form-check">
    <label class="form-check-label">
      <input class="form-check-input" type="checkbox"> Remember me
    </label>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

แบบฟอร์มอินไลน์พร้อมยูทิลิตี้

แบบฟอร์มอินไลน์ด้านบนให้ความรู้สึก "บีบอัด" และจะดูดีขึ้นมากเมื่อใช้ยูทิลิตี้การเว้นวรรคของ Bootstrap ตัวอย่างต่อไปนี้จะเพิ่มระยะขอบด้านขวา ( .mr-sm-2) ให้กับอินพุตแต่ละรายการบนอุปกรณ์ทั้งหมด (ขนาดเล็กขึ้นไป) และระดับล่างสุดของระยะขอบ ( .mb-2) ใช้เพื่อจัดรูปแบบฟิลด์อินพุตเมื่อแตก (เปลี่ยนจากแนวนอนเป็นแนวตั้งเนื่องจากพื้นที่/ความกว้างไม่เพียงพอ):

ตัวอย่าง

<form class="form-inline" action="/action_page.php">
  <label for="email" class="mr-sm-2">Email address:</label>
  <input type="email" class="form-control mb-2 mr-sm-2" placeholder="Enter email" id="email">
  <label for="pwd" class="mr-sm-2">Password:</label>
  <input type="password" class="form-control mb-2 mr-sm-2" placeholder="Enter password" id="pwd">
  <div class="form-check mb-2 mr-sm-2">
    <label class="form-check-label">
      <input class="form-check-input" type="checkbox"> Remember me
    </label>
  </div>
  <button type="submit" class="btn btn-primary mb-2">Submit</button>
</form>

คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการเว้นวรรคและคลาส "ตัวช่วย" อื่นๆ ในบท Bootstrap 4 Utilitiesของเรา


แบบฟอร์มแถว/ตาราง

คุณยังสามารถใช้คอลัมน์ ( .col) เพื่อควบคุมความกว้างและการจัดตำแหน่งของอินพุตแบบฟอร์มโดยไม่ต้องใช้ยูทิลิตี้การเว้นวรรค อย่าลืมใส่ไว้ใน.rowภาชนะ

ในตัวอย่างด้านล่าง เราใช้สองคอลัมน์ที่จะปรากฏเคียงข้างกัน คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับคอลัมน์และแถวในบทBootstrap Grids

ตัวอย่าง

<form>
  <div class="row">
    <div class="col">
      <input type="text" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    <div class="col">
      <input type="password" class="form-control" placeholder="Enter password" name="pswd">
    </div>
  </div>
</form>

หากคุณต้องการระยะขอบกริดน้อยลง (แทนที่รางน้ำคอลัมน์เริ่มต้น) ให้ใช้.form-rowแทน.row:

ตัวอย่าง

<form>
  <div class="form-row">
    <div class="col">
      <input type="text" class="form-control" id="email" placeholder="Enter email" name="email">
    </div>
    <div class="col">
      <input type="password" class="form-control" placeholder="Enter password" name="pswd">
    </div>
  </div>
</form>

การตรวจสอบแบบฟอร์ม

ถูกต้อง.
กรุณากรอกข้อมูลในช่องนี้
ถูกต้อง.
กรุณากรอกข้อมูลในช่องนี้

คุณสามารถใช้คลาสการตรวจสอบที่แตกต่างกันเพื่อให้ข้อเสนอแนะอันมีค่าแก่ผู้ใช้ เพิ่มอย่างใดอย่างหนึ่ง.was-validatedหรือ.needs-validationไปยัง<form>องค์ประกอบ ขึ้นอยู่กับว่าคุณต้องการให้คำติชมการตรวจสอบความถูกต้องก่อนหรือหลังการส่งแบบฟอร์ม ช่องป้อนข้อมูลจะมีเส้นขอบสีเขียว (ถูกต้อง) หรือสีแดง (ไม่ถูกต้อง) เพื่อระบุสิ่งที่ขาดหายไปในแบบฟอร์ม คุณยังสามารถเพิ่ม a .valid-feedbackหรือ.invalid-feedbackข้อความเพื่อแจ้งให้ผู้ใช้ทราบอย่างชัดเจนถึงสิ่งที่ขาดหายไป หรือจำเป็นต้องดำเนินการก่อนที่จะส่งแบบฟอร์ม

ตัวอย่าง

ในตัวอย่างนี้ เราใช้.was-validatedเพื่อระบุสิ่งที่ขาดหายไปก่อนส่งแบบฟอร์ม:

<form action="/action_page.php" class="was-validated">
  <div class="form-group">
    <label for="uname">Username:</label>
    <input type="text" class="form-control" id="uname" placeholder="Enter username" name="uname" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group form-check">
    <label class="form-check-label">
      <input class="form-check-input" type="checkbox" name="remember" required> I agree on blabla.
      <div class="valid-feedback">Valid.</div>
      <div class="invalid-feedback">Check this checkbox to continue.</div>
    </label>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

ตัวอย่าง

ในตัวอย่างนี้ เราใช้.needs-validationซึ่งจะเพิ่มผลการตรวจสอบหลังจากส่งแบบฟอร์มแล้ว (หากมีสิ่งใดขาดหายไป) โปรดทราบว่าคุณจะต้องเพิ่มโค้ด jQuery เพื่อให้ตัวอย่างนี้ทำงานได้อย่างถูกต้อง:

<form action="/action_page.php" class="needs-validation" novalidate>
  <div class="form-group">
    <label for="uname">Username:</label>
    <input type="text" class="form-control" id="uname" placeholder="Enter username" name="uname" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd" required>
    <div class="valid-feedback">Valid.</div>
    <div class="invalid-feedback">Please fill out this field.</div>
  </div>
  <div class="form-group form-check">
    <label class="form-check-label">
      <input class="form-check-input" type="checkbox" name="remember" required> I agree on blabla.
      <div class="valid-feedback">Valid.</div>
      <div class="invalid-feedback">Check this checkbox to continue.</div>
    </label>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

<script>
// Disable form submissions if there are invalid fields
(function() {
  'use strict';
  window.addEventListener('load', function() {
    // Get the forms we want to add 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>