【发布时间】:2021-06-07 00:39:44
【问题描述】:
使用引导程序 5
我有一个模式,当我点击#truck_modal 时会显示它,就像这样工作得很好:
(这段代码在我的js文件的顶部)
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('#add_truck').addEventListener('click', AddTruck);
const truck_modal = document.querySelector('#staticBackdrop');
const modal = new bootstrap.Modal(truck_modal, {
backdrop: 'static'
});
document.querySelector('#truck_modal').addEventListener('click', () => {
modal.show();
});
})
现在,如果我在上面的函数中添加以下内容,它就可以工作了。
document.querySelector('#add_truck').addEventListener('click', () => {
modal.hide();
});
但是这里不管AddTruck函数是否成功,点击#add_truck时它都会运行,我只想在AddTruck函数成功时隐藏它,所以我尝试了以下。
function AddTruck() {
... some validations ...
fetch('/inbound/add_truck', {
... some fetch code ...
})
.then(response => {
jsonResponse = response.json();
status_code = response.status;
// console.log(jsonResponse);
// console.log(status_code);
if(status_code != 200) {
alert('There was an error!');
} else{
origin.value = '';
produce.value = '';
license_num.value = '';
loaded_weight.value = '';
// document.querySelector('#add_truck').addEventListener('click', () => {
// modal.hide();
// });
modal.hide();
// hideFunc();
alert('Success!!!')
}
return status_code
})
.catch(error => {
console.log(error)
})
}
甚至试过这个:
function hideFunc() {
const truck_modal = document.querySelector('#staticBackdrop');
const modal = new bootstrap.Modal(truck_modal, {
backdrop: 'static'
});
modal.hide();
}
我在这里做错了什么?请帮忙...
或者这是一个功能?
编辑
这些是我的 js、bootstrap 和 jquery 脚本
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
<script src="{% static 'utils.js' %}"></script>
我将 $('#truck_modal').modal('hide'); 添加到我试图隐藏它的 else 块中。
【问题讨论】:
标签: javascript bootstrap-modal hide bootstrap-5