Si je vais ici
http://getbootstrap.com/2.3.2/javascript.html#modals
Et cliquez sur 'Lancer la démo modale', cela fait l'effet attendu. J'utilise le modal dans le cadre de mon processus d'inscription et la validation côté serveur est impliquée. S'il y a des problèmes, je souhaite rediriger l'utilisateur vers le même modal avec mes messages de validation affichés. Pour le moment, je ne vois pas comment faire afficher le modal autrement que par un clic physique de l'utilisateur. Comment puis-je lancer le modèle par programme?
Pour afficher manuellement la fenêtre contextuelle modale, vous devez le faire.
$('#myModal').modal('show');
Vous devez auparavant l’initialiser avec show: false
pour qu’il ne s’affiche pas avant de le faire manuellement.
$('#myModal').modal({ show: false})
Où myModal
est l'id du conteneur modal.
Vous ne devriez pas écrire data-toggle = "modal" dans l'élément qui a déclenché le modal (comme un bouton), et vous pouvez afficher le modal manuellement avec:
$('#myModal').modal('show');
et se cacher avec:
$('#myModal').modal('hide');
Si vous recherchez une création modale programmatique, vous aimerez peut-être ceci:
http://nakupanda.github.io/bootstrap3-dialog/
Même si le modal de Bootstrap fournit une méthode javascript pour la création modale, vous devez tout d’abord écrire les balises HTML de modal.
HTML
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
JS
$('button').click(function(){
$('#myModal').modal('show');
});
vous pouvez afficher le modèle via jquery (javascript)
$('#yourModalID').modal({
show: true
})
Démo: ici
ou vous pouvez simplement supprimer la classe "masquer"
<div class="modal" id="yourModalID">
# modal content
</div>
Un séjour sans faille
Je voulais faire ceci de la manière angular (2/4)
, voici ce que j'ai fait:
<div [class.show]="visible" [class.in]="visible" class="modal fade" id="confirm-dialog-modal" role="dialog">
..
</div>`
Points importants à noter :
visible
est une variable (booléenne) du composant qui régit la visibilité du modal.show
et in
sont des classes bootstrap.Composant
@ViewChild('rsvpModal', { static: false }) rsvpModal: ElementRef;
..
@HostListener('document:keydown.escape', ['$event'])
onEscapeKey(event: KeyboardEvent) {
this.hideRsvpModal();
}
..
hideRsvpModal(event?: Event) {
if (!event || (event.target as Element).classList.contains('modal')) {
this.renderer.setStyle(this.rsvpModal.nativeElement, 'display', 'none');
this.renderer.removeClass(this.rsvpModal.nativeElement, 'show');
}
}
showRsvpModal() {
this.renderer.setStyle(this.rsvpModal.nativeElement, 'display', 'block');
this.renderer.addClass(this.rsvpModal.nativeElement, 'show');
}
Html
<!--S:RSVP-->
<div class="modal fade" #rsvpModal role="dialog" aria-labelledby="niviteRsvpModalTitle" (click)="hideRsvpModal($event)">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="niviteRsvpModalTitle">
</h5>
<button type="button" class="close" (click)="hideRsvpModal()" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary bg-white text-dark"
(click)="hideRsvpModal()">Close</button>
</div>
</div>
</div>
</div>
<!--E:RSVP-->