html - 模态和 anchor 标记 href 错误

标签 html css twitter-bootstrap bootstrap-modal

我正在使用 bootstrap 4(我也尝试过使用 bootstrap 3)并且我认为我有一个错误的模式,因为当我在 anchor 标记 href 中添加一些东西时它会导致它崩溃,就像它的内容与我的 main 一样页面或它只是显示并消失了。这是我的模态和我的 anchor 标记外观(我的模态在我的 packages.php 中,而 anchor 标记在 packageclass.php 中的函数内):

<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

packageclass.php

    public function GetAllData($getTbl){
    try{
        $query = $this->dbconn->prepare("SELECT * FROM tblpackages P JOIN tblpackageincluded I ON P.PackageID = I.PackageID JOIN tblrates R ON P.PackageID = R.PackageID");
        $query->execute();
        if($query->rowCount() > 0){
            while ($row = $query->fetch(PDO::FETCH_ASSOC)){
                if($getTbl == 1){
                    echo "<tr>";
                    echo "<td>". $row['PackageID'] ."</td>";
                    echo "<td><a href='DeletePackages.php?id=". $row['PackageID'] ."'><i class='fas fa-trash-alt'></i></a></td>";
                    echo "<td><a href='EditPackages.php?id=". $row['PackageID'] ."'><i class='fas fa-edit'></i></a></td>";
                    echo "<td>". $row['PackageName'] ."</td>";
                    echo "<td>". $row['PackageCost'] ."</td>";
                    echo "<td>". $row['PackNote'] ."</td>";
                    echo '<td> <a href="?id='. $row['PackageID'] .'" data-toggle="modal" data-target="#exampleModalCenter"><i class="fas fa-eye"></i></a></td>';
                    echo '<td> <a href="?id='. $row['PackageID'] .'" data-toggle="modal" data-target="#exampleModalCenter"><i class="fas fa-eye"></i></a></td>';
                    echo "</tr>";
                }
                else if($getTbl == 2){
                    echo "<tr>";
                    echo "<td>". $row['PackageIncID'] ."</td>";
                    echo "<td>". $row['PackIncluded'] ."</td>";
                    echo "</tr>";
                }
                else if($getTbl == 3){
                    echo "<td>". $row['RateID'] ."</td>";
                    echo "<td>". $row['RateCount'] ."</td>";
                    echo "<td>". $row['CostPerHead'] ."</td>";
                }
            }
        }
    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
}

谢谢

1 秒后模态图像看起来像这样 Modal After a second

最佳答案

你有冲突:

  1. <a>标记会导致回发。
  2. 模态框在 js 驱动的点击时立即出现

您已将 anchor 设置为显示模式,然后回发以检索可能具有以下效果的数据

  • 关闭原来的模式,
  • 检索数据,
  • 然后建立一个新的modal-body
  • 在您单击 anchor 之前不会显示...这会重新开始该过程。

怎么办?

您需要消除冲突。你可以……

  1. 回发并检索数据,填充模态主体,然后在文档就绪时通过 js 自动显示模态。 -或-
  2. 在客户端单击通过 ajax 检索数据并在模态显示事件期间填充动态表。

如果您使用回发选项,您可以像现在使用 PHP 一样完成所有操作。您需要从 anchor 标记中删除模态显示并在 jquery 就绪函数或您喜欢的任何就绪方法中触发它。这不是一种非常干净的方法,但它是一种选择。

如果您选择客户端选项,您可能需要考虑第三方动态表插件。在我看来,这是与 Bootstrap 模态一起使用的更好选择。

关于html - 模态和 anchor 标记 href 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816886/

相关文章:

javascript - 创建 html 表单将下载链接发送到给定的电子邮件地址?

html - 响应图像 slider 不工作

html - 在转义的 html 中呈现换行符

javascript - 知道事件的先前处理程序是否返回 false。 defaultPrevented 在 IE < 9 中?

html - 如何组合 first-of-type、first-line 和 first-letter 伪元素?

javascript - 颜色变化的径向动画

javascript - 为什么 Twitter Bootstrap 类 navbar-fixed-top 不起作用?

html - 调整屏幕大小时需要帮助更改框的顺序

javascript - 将内容从 div 复制到页面标题时,如何防止 '&' 字符的 HTML 编码?

javascript - 根据当前页面以不同颜色突出显示主菜单中的链接