Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
107
rated 0 times [  113] [ 6]  / answers: 1 / hits: 9308  / 3 Years ago, mon, june 28, 2021, 12:00:00

I have developed a Python/Flask application and ran into an issue implementing a Bootstrap alert where the idea is to:



  • dismissible via a close button.

  • fade out and close after 2s if no action is taken.


Code


<div class="container">
{% for message in get_flashed_messages() %}
<script>
function close_alert()
{
document.getElementById("my_alert").close()
}
setTimeout("close_alert()", 2000)
</script>
<div id="my_alert" class="alert alert-primary alert-dismissible fade show" role="alert">
<strong>{{message}}</strong>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
</div>

I'm fairly new to Bootstrap and I would appreciate any support!


Thanks!


More From » html

 Answers
2

You can use the Bootstrap methods to achieve this. Take a look here at the bottom of the page for more info.


Logic


When the button is clicked jQuery removes the class d-none of the alert element which makes it visible. And then by using setTimeout() JS will wait 2000ms before closing the alert with alert() bootstrap 4 method.


It will work for only one click.


Note: using Bootstrap 4 methods requires to work with jQuery.




$('#btn').click(function(){

$('#alert').removeClass('d-none');

setTimeout(() => {
$('.alert').alert('close');
}, 2000);

})

<script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js crossorigin=anonymous></script>
<link rel=stylesheet href=https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css crossorigin=anonymous>

<div id=alert class=alert alert-primary m-3 d-none role=alert>
This is a primary alert—check it out!
</div>

<button class=btn btn-primary m-3 id=btn>
show alert and close it in 2 seconds
</button>




With plain JavaScript


This code will show the alert every time the user clicks the button. In case you don't want that, you could use a Boolean or a session storage variable combined with a conditional statement to make it work only once.




const btn = document.getElementById('btn'),
alert = document.getElementById('alert');

btn.addEventListener('click', () => {

alert.classList.remove('d-none');

setTimeout(() => {
alert.classList.add('d-none');
}, 2000)

})

<script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.slim.min.js crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js crossorigin=anonymous></script>
<link rel=stylesheet href=https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css crossorigin=anonymous>

<div id=alert class=alert alert-primary m-3 d-none role=alert>
This is a primary alert—check it out!
</div>

<button id=btn class=btn btn-primary m-3>
show alert and close it in 2 seconds
</button>




[#1170] Tuesday, June 22, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
estefanib

Total Points: 508
Total Questions: 104
Total Answers: 83

Location: Lebanon
Member since Sun, Aug 2, 2020
4 Years ago
;