单页面多Bootstrap模态框冲突:Modal2无法触发的解决方法
Bootstrap 4 多个模态框独立运行的问题解决办法
嘿,我看了你的代码,问题其实很明显——ID冲突+触发元素的错误写法导致第二个模态框没法正常触发,咱们一步步来修正:
问题根源拆解
- 第二个触发按钮里嵌套了
<a>标签,还写错了模态框的触发属性(data-toggle="modalshow"是错的,Bootstrap模态框的触发属性应该是data-toggle="modal") - 触发第二个模态框的
data-target没有指向它的真实ID#exampleModalshow,反而还和第一个模态框的ID重复了 - 第二个模态框的
aria-labelledby和标题ID不匹配,虽然不影响功能,但不符合规范
修正后的完整代码
模态框1(新增Owner)
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#exampleModal"> Add New </button> <!-- Modal Add Owner --> <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Add Owner</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <form method="POST" action="{{ route('owner.store') }}"> @csrf <div class="form-group"> <label for="">Add Owner Name</label> <input type="text" name="owner_name" class="form-control" placeholder="Owner Name"> </div> <input type="submit" name="submit" class="btn btn-primary" value="submit"> </form> </div> <div class="modal-footer"> </div> </div> </div> </div>
模态框2(查看/编辑Owner)
<!-- 去掉了嵌套的a标签,直接用按钮触发模态框 --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalshow"> Show </button> <!-- Modal Show Owner--> <div class="modal fade" id="exampleModalshow" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <!-- 修正了标题ID,和aria-labelledby对应 --> <h5 class="modal-title" id="exampleModalLabel2">View Owner</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <form method="POST" action="{{ route('owner.update', $owner->id) }}"> @csrf @method('PATCH') <div class="form-group"> <label for="">Owner Name</label> <input type="text" name="owner_name" class="form-control" value="{{ $owner->owner_name }}"> </div> <input type="submit" name="submit" class="btn btn-primary" value="submit"> </form> </div> <div class="modal-footer"> </div> </div> </div> </div>
关键注意事项
- 唯一ID:每个模态框的ID必须完全唯一,触发元素的
data-target必须精准对应模态框的ID,这是Bootstrap模态框识别目标的核心依据 - 避免嵌套触发元素:不要在
<button>里嵌套<a>标签,两种元素都会触发点击事件,容易导致冲突或意外行为 - 属性规范:模态框的
aria-labelledby要和内部标题的id保持一致,提升可访问性
内容的提问来源于stack exchange,提问作者developer_
相关产品推荐
相关产品推荐

