Parfois, les installateurs de logiciels vous forcent à faire défiler jusqu'à la fin du CLUF avant que la case "J'accepte" soit activée. Comment puis-je produire le même effet sur une page Web?Javascript pour faire défiler jusqu'à la fin
3
A
Répondre
5
<html>
<head>
<script type="text/javascript">
function setupPage() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
if (scrollableHeight > visibleHeight) {
var checkbox = document.getElementById("agreebox");
checkbox.checked=false;
checkbox.disabled=true;
agreement.onscroll = handleScroll;
}
}
function handleScroll() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
var position = agreement.scrollTop;
if (position + visibleHeight == scrollableHeight) {
document.getElementById("agreebox").disabled=false;
}
}
</script>
</head>
<body>
<form>
<textarea id="agreetext" rows="8" cols="40">Long agreement</textarea>
<br/><br/>
<input type="checkbox" id="agreebox" value="true"/> <label id="agreelabel" for="agreebox">I agree</label>
<br/><br/>
<input type="submit" value="Continue"/>
</form>
<script type="text/javascript">
// We put this at the end of the page rather than in an document.onload
// because the document.onload event doesn't fire until all images have loaded.
setupPage();
</script>
</body>
</html>
1
excellent morceau de code, si vous voulez aussi changer la couleur de l'étiquette à côté de la case à cocher, il suffit de modifier le code comme suit:
function setupPage() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
if (scrollableHeight > visibleHeight) {
var checkbox = document.getElementById("agreebox");
checkbox.checked=false;
checkbox.disabled=true;
document.getElementById("agreelabel").style.color = "#777";
agreement.onscroll = handleScroll;
}
}
function handleScroll() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
var position = agreement.scrollTop;
if (position + visibleHeight == scrollableHeight) {
document.getElementById("agreebox").disabled=false;
document.getElementById("agreelabel").style.color = "black";
}
}
1
J'ai utilisé un textarea en lecture seule pour afficher mon accord de licence. Notez que ce code ne fonctionnera pas si le texte du contrat de licence n'est pas assez long pour que la zone de texte affiche une barre de défilement.
$(function() {
var serviceAgreementScrolled = false;
$('#service-agreement-textarea').scroll(
function() {
if (this.scrollTop + $(this).height() + 30 >= this.scrollHeight) {
serviceAgreementScrolled = true;
}
}
);
$('#accept-service-agreement-checkbox').change(
function() {
if ($(this).is(':checked') && !serviceAgreementScrolled) {
alert('Please scroll to read the rest of the service agreement.');
$(this).prop('checked', false);
}
}
);
});
<textarea id="service-agreement-textarea" readonly="readonly">Long long text here</textarea>
<label>
<input type="checkbox" id="accept-service-agreement-checkbox" />
I accept the terms of the service agreement
</label>
Questions connexes
- 1. WebBrowserControl Faire défiler jusqu'à la fin
- 2. Comment faire défiler jusqu'à la fin de System.Windows.Forms.WebBrowser?
- 3. Zoomer/faire défiler jusqu'à
- 4. Comment utiliser jquery pour faire défiler horizontalement
- 5. jscrollpane pour faire défiler un panneau
- 6. Comment faire pour faire défiler un RichTextBox vers le bas?
- 7. Comment faire défiler correctement CEdit?
- 8. Faire défiler une liste avec la page haut/bas
- 9. Href = "#" Ne pas faire défiler
- 10. Utilisation de JavaScript pour faire défiler une liste d'éléments dans ASP.NET MVC
- 11. Comment faire défiler en douceur pour les listes dans Swing
- 12. WPF ControlTemplate pour faire défiler le contrôle TreeView
- 13. Comment faire défiler manuellement un panneau?
- 14. Visual Studio: faire défiler les points d'arrêt
- 15. Comment faire défiler les blocs de matrice?
- 16. Besoin de faire défiler une grille WPF
- 17. Comment faire défiler en douceur dans UIScrollView?
- 18. Comment faire défiler Swing avec "ensureIndexIsVisible"?
- 19. Faire défiler des DataTemplates dans ListBox sur une minuterie
- 20. Comment faire défiler du texte dynamique sur une courbe en HTML/Javascript/CSS?
- 21. Comment faire défiler "infiniment" vue large dans Android?
- 22. HTML faire défiler vers le bas sur une table
- 23. Comment faire pour faire défiler un UITableView vers une section qui ne contient aucune ligne?
- 24. Faire disparaître une info-bulle fixe en faisant défiler
- 25. Comment puis-je obtenir un conteneur Flex pour faire défiler jusqu'à la dernière position?
- 26. Meilleure méthode pour faire défiler un ScrollPane en positionnant le pointeur de la souris dans actionscript?
- 27. Comment puis-je ajouter un ViewController pour faire défiler la vue
- 28. Comment configurer la barre de défilement du navigateur pour faire défiler une partie d'une page?
- 29. Comment modifier la saisie semi-automatique des tabulations dans bash pour faire défiler les dossiers?
- 30. Raccourci clavier Visual Studio pour faire défiler la méthode surcharges info-bulles?
Pourquoi voudriez-vous faire ?? Sans vouloir vous offenser, mais c'est le "trait" le plus ennuyeux et le plus inutile! –
Je suppose que c'est la seule réponse valide :) –
Pour l'enregistrement, cela me rendrait fou. – scunliffe