Je suis en train d'utiliser le plugin modal bootstrap pour afficher de longs messages juridiques sur un site Web que je concevais, mais le problème est que, si vous ouvrez un mode après l'autre, le second sera déployé à n'importe quelle position, le premier étant . Je cherche donc un moyen de faire défiler un div vers le haut avec JS / JQuery. C'est le code que j'utilise actuellement:
HTML:
<!--MODAL--> <div id="modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="modalTitle" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3 id="modalTitle"></h3> </div> <div id="modal-content" class="modal-body"> </div> <div class="modal-footer"> <button id="modalPrint" class="btn btn-info hidden-phone" onClick=''>Print</button> <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> </div> </div>
Javascript:
function openModal(heading, url) { $.ajax({ url: url, cache: false }).done(function( html ) { $("#modal-content").html(html); $("#modalTitle").html(heading); $('#modalPrint').attr('onClick', 'loadPrintDocument(printCookies, {attr : "href", url : '+ url +', showMessage: false, message: "Please wait while we create your document"})'); $('#modal').modal('show'); $("#modal-content").scrollTop(0); }); }
Comme vous pouvez le voir, j'ai essayé de faire défiler le haut de la page après le mode modal. Des idées?
Maintenant, avec bootstrap 3, les événements ont un changement et peuvent être obtenus comme ceci (plus une animation en douceur vers le haut)
$('#modal').on('shown.bs.modal', function () { $('#modal').animate({ scrollTop: 0 }, 'slow'); });
D'accord, j'ai répondu à ma propre question. Pour toute autre personne avec ce problème, ajoutez simplement cette fonction à votre JS!
$('#modal').on('shown', function () { $("#modal-content").scrollTop(0); });
Je laisserai cette question, car il n'y en a pas un semblable (que je pourrais trouver) et cela peut aider quelqu'un
Modal avec une classe de: .modal
JS pour faire apparaître le scroll avec le modal (JS pourrait être simplifié):
$('body').on('click', '.page-scroll', function(event) { var $anchor = $(this); $('html, body, .modal').stop().animate({ scrollTop: $($anchor.attr('href')).offset().top }, 1500, 'easeInOutExpo'); event.preventDefault(); });
Il y a eu une modification dans boostrap où vous devez utiliser: on shown.bs.modal
Appelez une fonction lorsque vous affichez la fenêtre modal (j'ai opté pour cette méthode)
<button onclick="showSMSSummary(); return false;" data-toggle="tooltip" title="Click To View Summary" class="btn btn-primary btn-sm">SMS Summary</button> function showSMSSummary() { $('#HelpScreenModalContent').modal('show'); $('#HelpScreenModal').animate({ scrollTop: 0 }, 'fast'); }
Sur Bootstrap 4 (v4.0.0-alpha.6), ce qui suit m'a bien fonctionné:
$('#Modal').show().scrollTop(0);
ScrollTop bootbox modal sur fadeIn La réponse est dans ce problème.
Lors de la configuration de la boîte de dialogue bootbox, ajoutez .off("shown.bs.modal");
Ceci à la fin.
bootbox.dialog({ ... }).off("shown.bs.modal");
Il se déroulera en haut lorsque vous ouvrez la boîte de dialogue.