You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Bootstrap模态框无法弹出问题求助

Fixing Your Bootstrap Modal Not Popping Up

Hey there, let's get that Bootstrap Modal working for you! I've gone through your code, and here are the key issues and fixes to resolve this:

1. Confirm Bootstrap Assets Are Properly Loaded

Bootstrap 5 requires both its CSS and JavaScript (which includes Popper.js, a critical dependency for modals) to function correctly. Make sure you've added these to your HTML—preferably placing the JS at the end of your <body> tag (or using defer to ensure it loads after the DOM is ready):

<!-- Add this in the <head> section -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Add this right before </body> -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

If you're using local copies of Bootstrap, double-check file paths are accurate—broken paths will prevent the modal from triggering.

2. Fix Your HTML Structure Error

Looking at your page code, there's a misplaced closing tag that's messing up the DOM structure: your <form> is being closed after the card-body div, which is invalid. This can interfere with Bootstrap's ability to find and trigger the modal.

Incorrect Structure:

<div class="card-body p-5">
  <h1 class="fs-4 card-title fw-bold mb-4">CEP</h1>
  <form method="POST" action = "autenticar.php">
    <div class="mb-3">
      <input id="cep" type="number" class="form-control" name="cep" value="" required="required">
    </div>
    <button type="submit" class="btn btn-primary ms-auto"> Pesquisar </button>
  </div> <!-- ❌ Closes card-body before form -->
  </form>

Corrected Structure:

<div class="card-body p-5">
  <h1 class="fs-4 card-title fw-bold mb-4">CEP</h1>
  <form method="POST" action = "autenticar.php">
    <div class="mb-3">
      <input id="cep" type="number" class="form-control" name="cep" value="" required="required">
    </div>
    <button type="submit" class="btn btn-primary ms-auto"> Pesquisar </button>
  </form> <!-- ✅ Close form first -->
</div> <!-- Then close card-body -->

3. Double-Check Modal Trigger & ID Match

Good news—your trigger button's data-bs-target="#staticBackdrop" perfectly matches the modal's id="staticBackdrop"! Just keep an eye out for typos (like capitalization errors) if you make edits later.

4. Check for Console Errors

Open your browser's developer tools (F12) and go to the Console tab. Any errors here (like "Bootstrap is not defined" or DOM element issues) will point you to the root cause. For example, forgetting to load Bootstrap JS will throw an error about data-bs-toggle not being recognized.

Full Corrected Code Example

Here's your full code with the structure fix and Bootstrap assets included:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CEP Search</title>
  <!-- Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="h-100">
  <div class="container h-100"> 
    <div class="row justify-content-sm-center h-100"> 
      <div class="col-xxl-4 col-xl-5 col-lg-5 col-md-7 col-sm-9"> 
        <div class="text-center my-5"> 
          <img src="img/logo-branca.png" alt="logo" width="100"> 
        </div> 
        <div class="card shadow-lg"> 
          <div class="card-body p-5"> 
            <h1 class="fs-4 card-title fw-bold mb-4">CEP</h1> 
            <form method="POST" action = "autenticar.php"> 
              <div class="mb-3"> 
                <input id="cep" type="number" class="form-control" name="cep" value="" required="required"> 
              </div> 
              <button type="submit" class="btn btn-primary ms-auto"> Pesquisar </button> 
            </form>
          </div> 
          <div class="card-footer py-3 border-0"> 
            <div class="text-center"> 
              <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#staticBackdrop"> BUTTON TO OPEN THE MODAL </button> 
            </div> 
          </div> 
        </div> 
        <div class="text-center mt-5 text-muted"> Copyright &copy; 2021 &mdash; Rodrigo Franco </div> 
      </div> 
    </div> 
  </div>

  <!-- Modal -->
  <div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
      <div class="modal-content"> 
        <div class="modal-header"> 
          <h5 class="modal-title" id="staticBackdropLabel">Modal title</h5> 
          <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 
        </div> 
        <div class="modal-body"> ... </div> 
        <div class="modal-footer"> 
          <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> 
          <button type="button" class="btn btn-primary">Understood</button> 
        </div> 
      </div> 
    </div> 
  </div>

  <!-- Bootstrap JS -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Try these fixes, and your modal should pop up as expected!

内容的提问来源于stack exchange,提问作者Rodrigo Franco

火山引擎 最新活动