I\'m using Bootstrap 2.0 for my project and I would like to dynamically add Bootstrap alert box in my page (http://twitter.github.com/bootstrap/javascript.html#alerts). I wa
I found that AlertifyJS is a better alternative and have a Bootstrap theme.
alertify.alert('Alert Title', 'Alert Message!', function(){ alertify.success('Ok'); });
Also have a 4 components: Alert, Confirm, Prompt and Notifier.
Exmaple: JSFiddle
Try this (see a working example of this code in jsfiddle: http://jsfiddle.net/periklis/7ATLS/1/)
<input type = "button" id = "clickme" value="Click me!"/>
<div id = "alert_placeholder"></div>
<script>
bootstrap_alert = function() {}
bootstrap_alert.warning = function(message) {
$('#alert_placeholder').html('<div class="alert"><a class="close" data-dismiss="alert">×</a><span>'+message+'</span></div>')
}
$('#clickme').on('click', function() {
bootstrap_alert.warning('Your text goes here');
});
</script>
EDIT: There are now libraries that simplify and streamline this process, such as bootbox.js
function bootstrap_alert() {
create = function (message, color) {
$('#alert_placeholder')
.html('<div class="alert alert-' + color
+ '" role="alert"><a class="close" data-dismiss="alert">×</a><span>' + message
+ '</span></div>');
};
warning = function (message) {
create(message, "warning");
};
info = function (message) {
create(message, "info");
};
light = function (message) {
create(message, "light");
};
transparent = function (message) {
create(message, "transparent");
};
return {
warning: warning,
info: info,
light: light,
transparent: transparent
};
}
/**
Bootstrap Alerts -
Function Name - showalert()
Inputs - message,alerttype
Example - showalert("Invalid Login","alert-error")
Types of alerts -- "alert-error","alert-success","alert-info","alert-warning"
Required - You only need to add a alert_placeholder div in your html page wherever you want to display these alerts "<div id="alert_placeholder"></div>"
Written On - 14-Jun-2013
**/
function showalert(message,alerttype) {
$('#alert_placeholder').append('<div id="alertdiv" class="alert ' + alerttype + '"><a class="close" data-dismiss="alert">×</a><span>'+message+'</span></div>')
setTimeout(function() { // this will automatically close the alert and remove this if the users doesnt close it in 5 secs
$("#alertdiv").remove();
}, 5000);
}
Found this today, made a few tweaks and combined the features of the other answers while updating it to bootstrap 3.x. NB: This answer requires jQuery.
In html:
<div id="form_errors" class="alert alert-danger fade in" style="display:none">
In JS:
<script>
//http://stackoverflow.com/questions/10082330/dynamically-create-bootstrap-alerts-box-through-javascript
function bootstrap_alert(elem, message, timeout) {
$(elem).show().html('<div class="alert"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><span>'+message+'</span></div>');
if (timeout || timeout === 0) {
setTimeout(function() {
$(elem).alert('close');
}, timeout);
}
};
</script>
Then you can invoke this either as:
bootstrap_alert('#form_errors', 'This message will fade out in 1 second', 1000)
bootstrap_alert('#form_errors', 'User must dismiss this message manually')
just recap:
$(document).ready(function() {
$('button').on( "click", function() {
showAlert( "OK", "alert-success" );
} );
});
function showAlert( message, alerttype ) {
$('#alert_placeholder').append( $('#alert_placeholder').append(
'<div id="alertdiv" class="alert alert-dismissible fade in ' + alerttype + '">' +
'<a class="close" data-dismiss="alert" aria-label="close" >×</a>' +
'<span>' + message + '</span>' +
'</div>' )
);
// close it in 3 secs
setTimeout( function() {
$("#alertdiv").remove();
}, 3000 );
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<button onClick="" >Show Alert</button>
<div id="alert_placeholder" class="container" ></div>
codepen