Je veux forcer l’utilisateur à lire tout l’accord à l’intérieur du modal. L’idée est simple, s’ils ne défilent pas jusqu’à la dernière ligne du texte. Le bouton est toujours désactivé. Mais le bouton n’est pas activé. Ceci est mon code:
Javascript:
$('#agreement').scroll(function () { if ($(this).scrollTop() == $(this)[0].scrollHeight - $(this).height()) { $('#closeBtn').removeAttr('disabled'); } });
En ce qui concerne l’image plus claire. J’ai mis le code en js ici: http://jsfiddle.net/h3WDq/1129/
Ceci est une version de mise à jour de @ BG101. Le bouton est activé lorsque je fais défiler vers le bas, mais il rest activé même si le bouton modal est à nouveau cliqué. http://jsfiddle.net/h3WDq/1132/
votre modal-body
besoin de l’événement scroll, et vous avez besoin d’un petit changement pour le if
: –
$('.modal-body').scroll(function () { if ($('#agreement').height() == ($(this).scrollTop() + $(this).height())) { $('#closeBtn').removeAttr('disabled'); } });
extrait de travail ci-dessous (mis à jour pour activer / désactiver)
$('.modal-body').scroll(function() { var disable = $('#agreement').height() != ($(this).scrollTop() + $(this).height()); $('#closeBtn').prop('disabled', disable); });
.btn-group { z-index: 1051; } .modal-body { height: 300px; overflow: auto }
User Agreement
Pourquoi ne pas mettre un élément caché au bas de l’accord et détecter le moment où le décalage de cet élément défile vers le haut?
$('#agreement').scroll(function () { var target = $("#target").offset().top; if ($(this).scrollTop() >= target) { $('#closeBtn').removeAttr('disabled'); } });