Bonjour, j'ai l'alerte suivante qui est cachée sur la page
<div class="alert alert-success" id="selectCodeNotificationArea" hidden="hidden">
<button type="button" class="close" data-dismiss="alert">×</button>
@TempData["selCode"]
</div>
Je l'affiche avec le javascript suivant
$('#send_reject_btn').click(function () {
var selRowIds = $("#ApprovalGrid").jqGrid('getGridParam', 'selarrrow');
if (selRowIds.length > 0) {
$('#reject_alert').show();
} else {
$('#selectCodeNotificationArea').show();
}
});
Ceci est évidemment lié à un bouton dans mon HTML.
Une fois que l'alerte est affichée si je la ferme à l'aide du <button type="button" class="close" data-dismiss="alert">×</button>
. La prochaine fois que j'appuie sur le bouton pour ouvrir l'alerte, je peux voir que $('#selectCodeNotificationArea').show();
est appelé dans mon écran de mise au point, mais l'alerte ne s'affiche plus.
Quelqu'un at-il déjà vécu cela?
La suppression de données supprime complètement l'élément. Vous devrez masquer l'alerte si vous souhaitez la réafficher.
Par exemple;
<div class="alert alert-success" id="selectCodeNotificationArea" hidden="hidden">
<button type="button" class="close" data-hide="alert">×</button>
@TempData["selCode"]
</div>
et ce JS
$(function(){
$("[data-hide]").on("click", function(){
$(this).closest("." + $(this).attr("data-hide")).hide();
});
});
Le meilleur moyen consiste à supprimer, data-dismiss="alert"
de votre balise, et à utiliser le nom de classe, c’est-à-dire près de, pour masquer et afficher l’erreur/avertissement.
// WHEN CLOSE CLICK HIDE THE ERROR / WARNING .
$(".close").live("click", function(e)
{
$("#add_item_err").hide();
});
// SOME EVENT TRIGGER IT.
$("#add_item_err").show();
[Je travaille sur des éléments ajoutés dynamiquement, c'est pourquoi j'utilise 'live', vous devrez peut-être changer selon vos besoins.]
Bootsrap $(selector).alert('close')
( http://getbootstrap.com/javascript/#alerts ) supprime réellement l'élément d'alerte afin que vous ne puissiez plus l'afficher. Pour implémenter les fonctionnalités souhaitées, il suffit de supprimer l'attribut data-dismiss="alert"
de la définition du bouton de fermeture et d'ajouter un petit gestionnaire d'événements pour masquer l'alerte.
<div class="alert alert-success" id="selectCodeNotificationArea" hidden="hidden">
<button type="button" class="close alert-close">×</button>
@TempData["selCode"]
</div>
<script>
$(function() {
$(document).on('click', '.alert-close', function() {
$(this).parent().hide();
})
});
</script>
J'ai rencontré ce problème également et le problème avec la solution cochée ci-dessus est que j'ai toujours besoin d'accéder aux événements standard de fermeture d'alerte d'amorçage.
Ma solution a été d'écrire un petit plugin jQuery personnalisable qui injecte une alerte Bootstrap 3 correctement formée (avec ou sans bouton de fermeture selon vos besoins) avec un minimum de tracas et vous permettant de la régénérer facilement après la boîte. est fermé.
Voir https://github.com/davesag/jquery-bs3Alert pour l’utilisation, les tests et des exemples.
En fait, les alertes bootstrap sont conçues pour être supprimées plutôt que cachées . Vous pouvez constater qu’en consultant le message d’alerte, il ne contient aucun élément d’emballage . Toute tentative de modification du message d’alerte nécessite donc un code supplémentaire éléments de nœud de texte) . Vous devez redéfinir votre application et créer un nouvel élément .alert chaque fois que vous souhaitez le modifier/l'afficher à nouveau.
J'ai utilisé l'approche de travail suivante.
$(document).ready(function(){
$("#btnFV").click(function()
{
$("#alertFV").addClass("in");
});
$("#alertFV").on("close.bs.alert", function ()
{
$("#alertFV").removeClass("in");
return false;
});
});
Corps HTML contient ci-dessous alerte
<button id="btnFV" class="form-control">Button To Show/Hide Alert</button>
<div id="alertFV" class="alert alert-danger alert-dismissable fade show">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>Danger!</strong>
</div>