How to get close event for dynamic alert
by kidino
HTML
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.css">
<!--
Bootstrap docs: https://getbootstrap.com/docs
-->
<div class="container">
<div class="row">
<div class="col">
<p> </p>
</div>
</div>
<div class="row">
<div class="col">
<input type="text" class="form-control" id="datepicker">
<p> </p>
</div>
</div>
<div class="row">
<div class="col">
<div id="dates">
</div>
</div>
<div class="col">
<div id="counter">
</div>
</div>
</div>
</div>
<script id="custom_date_tpl" type="text/jsx">
<div class="alert alert-info alert-dismissible custom_date_item" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> {{date_string}}
</div>
</script>
CSS
#dates {
padding: 15px;
background-color: #f0f0f0;
border: 1px solid #ccc;
}
#counter {
border: 1px solid #00b;
background-color: #ccb;
}
JavaScript
$('#datepicker').datepicker({
format: "dd MM yyyy",
startView: 0,
orientation: "auto",
autoclose: true
}).on('changeDate', function(e) {
var d = formatDate(e.date);
var f = document.getElementById('custom_date_tpl').innerHTML;
f = f.replace('{{date_string}}', d);
$('#dates').append(f);
$('#counter').html( $('.custom_date_item').length );
});
$('#dates').on('click','button.close', function () {
$(this).parent().remove();
$('#counter').html( $('.custom_date_item').length );
});
function formatDate(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthNames[monthIndex] + ' ' + year;
}