我的所有模态表单都工作正常。但这是我从 Bootstrap 4 移植到 Bootstrap 5 的一个,它不会关闭。关闭按钮(弹出窗口顶部的 X)不会关闭模式。并且“取消”按钮不会关闭模式。
我将
data-dismiss
更新为data-bs-dismiss
。我不知道我还缺少什么。没有 JavaScript 错误。
$('#open-modal').on('click', function() {
var $modal = $('#date-filter-modal');
$modal.show();
});
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<button id="open-modal" type="button" class="btn btn-primary">Open Modal</button>
<div id="date-filter-modal" class="modal" tabindex="-1" role="dialog">
<form method="get">
<input type="hidden" name="ftype" />
<input type="hidden" name="fid" />
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Start Date</label>
<input class="form-control start-date" type="date" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">End Date</label>
<input class="form-control end-date" type="date" />
</div>
</div>
</div>
</div>
<div class="modal-footer d-flex justify-content-between">
<div>
<button type="button" class="clear-date-filter btn btn-danger">Clear</button>
</div>
<div>
<button type="submit" class="btn btn-success">Set Filter</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</form>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
任何人都可以建议我可能错过了什么吗?
看来您没有初始化模式。从模态中删除
display: block
并正确“显示”它,如下所示:
let modal = new bootstrap.Modal('#date-filter-modal')
modal.show()
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
<div id="date-filter-modal" class="modal" tabindex="-1" role="dialog">
<form method="get">
<input type="hidden" name="ftype" value="ShipDate">
<input type="hidden" name="fid">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Ship Date Filter</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Start Date</label>
<input class="form-control start-date" type="date">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">End Date</label>
<input class="form-control end-date" type="date">
</div>
</div>
</div>
</div>
<div class="modal-footer d-flex justify-content-between">
<div>
<button type="button" class="clear-date-filter btn btn-danger">Clear</button>
</div>
<div>
<button type="submit" class="btn btn-success">Set Filter</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</form>
</div>
看来我发现了问题。
在 Bootstrap 4 下,我会像这样显示模式:
$modal.modal();
这在 Bootstrap 5 下没有任何作用,所以我将其更改为:
$modal.show();
这可行,但我猜它不再使用 Bootstrap 模态逻辑。它只是使表单可见。无论哪种方式,它都会阻止正常的解雇逻辑工作。
正确的语法是:
$modal.modal('show');
您可以尝试为
.btn-close
添加功能。
let modal = new bootstrap.Modal('#date-filter-modal')
modal.hide()
$('#open-modal').on('click', function() {
var $modal = $('#date-filter-modal');
modal.show();
});
$('.btn-close').on('click', function() {
var $modal = $('#date-filter-modal');
modal.hide();
});
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<button id="open-modal" type="button" class="btn btn-primary">Open Modal</button>
<div id="date-filter-modal" class="modal" tabindex="-1" role="dialog">
<form method="get">
<input type="hidden" name="ftype" />
<input type="hidden" name="fid" />
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Start Date</label>
<input class="form-control start-date" type="date" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">End Date</label>
<input class="form-control end-date" type="date" />
</div>
</div>
</div>
</div>
<div class="modal-footer d-flex justify-content-between">
<div>
<button type="button" class="clear-date-filter btn btn-danger">Clear</button>
</div>
<div>
<button type="submit" class="btn btn-success">Set Filter</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</form>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
引导程序v4.3.1:
<button type="button" id="btnCloseCategories" class="btn btn-danger" data-dismiss="modal">Close</button>
引导程序v5.1.0:
<button type="button" id="btnCloseCategories" class="btn btn-danger" data-bs-dismiss="modal">Close</button>
旧: 数据解除=“模态”
新: 数据-bs-dismiss =“模态”