5433 sujets

Sémantique web et HTML

Bonjour,
J'ai une fenêtre modale dans laquelle il y a un calendrier qui affiche 1 mois.
Je propose au visiteur de choisir le mois qu'il veut et je balance ça avec un formulaire en POST avec action vers la modal. Ça marche bien mais ma fenêtre est plus haut que l'écran et j'oblige donc mon visiteur à descendre lui-même en bas de la fenêtre pour retrouver le calendrier mis à jour. Alors, question :
Comment faire en sorte d'afficher directement le calendrier dont la DIV possède une ID ? (autrement dit comment indiquer dans le lien <a href= "fichier.html#modal"> qu'il faut encore aller à #calendrier ? Un logique <a href= "fichier.html#modal#calendrier"> ne semble pas faire l'affaire...

Je propose aussi dans ce calendrier de voir le mois suivant directement, et là si je passe via un bouton submit dans un formulaire du type vu au-dessus, ça marche bien (avec toujours le même problème de tomber en début de page et non sur le calendrier évidemment). Alors question moins importante :
Si je voulais faire passer en GET comment faudrait-il faire ?
<a href= "fichier.html#modal?mois=04"> ne semble pas fonctionner.

Je pourrais peut-être afficher sous forme de modale(2) au-dessus de la modale(1) mais il faudrait alors que les données soit déjà chargées avec la page d'accueil de ces modales... vous imaginez le bazar et son poids de stock inutile pour les 12 prochains mois... donc je recharge la page avec le nouveau mois en GET (si on me dit comment) ou POST ... et pour l'heure je n'ai que la suggestion à faire au visiteur de l'inciter à descendre avec le scoll.... pas top, ni cool.

Merci pour votre aide
Modifié par Patrick30 (18 Mar 2022 - 06:29)
Salut,

cela me semble bizarre le #modal#calendrier dans ton lien Smiley ohwell
Pas mieux de mettre juste #calendrier ?

Après pour le reste je ne pige pas trop Smiley ohwell
A priori pour éviter le rechargement de la page il faudrait regarder du coté du javascript (ajax?) ou jouer avec du css pour faire apparaître/disparaître des trucs pré chargé au départ.
Mathieuu a écrit :
... cela me semble bizarre le #modal#calendrier dans ton lien
Pas mieux de mettre juste #calendrier ?


Le second dièze est une suggestion que je fais, que j'ai essayé, mais qui ne fonctionne pas. C'est pour cibler l'id du calendrier dans le bas du document modal lui-même.

a écrit :
Après pour le reste je ne pige pas trop
A priori pour éviter le rechargement de la page il faudrait regarder du coté du javascript (ajax?) ou jouer avec du css pour faire apparaître/disparaître des trucs pré chargé au départ.


Javascript je n'y connais pas grand chose et ajax rien du tout, CSS un peu mais pas pas suffisamment et puis comme je dis dans mon sujet je ne peux pas et ne veux pas charger la page avec 12 pages de calendrier préchargées.
Il y a certainement un moyen de cibler une "id" dans une modale.... donc après rechargement de la page d'afficher le bas de la modale.

Mais je te remercie, Mathieuu, d'avoir participé et suggéré, c'est sympa Smiley smile .
Modifié par Patrick30 (18 Mar 2022 - 06:28)
Administrateur
Bonjour,

une modale devrait s'ouvrir avec un <button> et non un lien : c'est une action et justement pas une nouvelle page (sinon ce serait pas une modale par dessus le contenu Smiley cligne ).
La version longue mais claire de sa gestion et de tout ce que tu peux espérer savoir : https://accessuse.eu/fr/Modales.html (
Version courte : ce script de @Nico3333fr https://van11y.net/accessible-modal/

Aller ouvrir un composant dans le composant, ce sont 2 actions successives. Il te faudrait déclencher l'ouverture de la modale (attendre confirmation que c'est OK) puis déclencher l'ouverture du calendrier puis agir dessus.
Faire ça de manière propre est compliqué (pour avoir vu dew le faire... Si lui galère, tout le monde galère Smiley lol )
Si chacun de tes composants a des méthodes que tu peux appeler, ça simplifie la suite mais cette partie-là ne l'est pas...
Exemple de méthodes avec la modale de Bootstrap : https://getbootstrap.com/docs/5.1/components/modal/#methods
Merci Felipe,
Bonjour.
J'ai été un peu dépassé hier... et je vois ton commentaire ce matin. je vais regarder ça pendant le we.
A plus pour mon retour.