Faire avancer une progressbar par appui sur bouton radio

Fermé
melomen974 Messages postés 1 Date d'inscription mercredi 6 avril 2022 Statut Membre Dernière intervention 6 avril 2022 - 6 avril 2022 à 10:47
 DoctorHow - 11 avril 2022 à 22:08
hello!
voila je bloque depuis 10 jours sur un formulaire de contact contact form 7 sur wordpress. Je cherche à faire monter une progressbar sur une notation de 1 à 10 en bouton radio.
Pour être précis c'est une question sur le niveau de la personne ( noté de 1 à 10)/ Ce que je souhaite réaliser c'est un :hover sur le bouton radio cliqué et l'augmentation de la progressbar située en dessous selon le niveau choisi (5 = 50%, 7=70%, etc...). En CSS j'ai fait un display:none sur l'input et posé un cursor:pointer pour appuyer sur la note. mainenant je ne sais pas comment faire progresser la barre en JS surement pour que en gros elle avance de 10% * la note.


mon CSS :

.progress {
padding: 4px;
background: rgba(0, 0, 0, 1);
border-radius: 6px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
}

.progress-bar {
height: 16px;
border-radius: 4px;
background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
-webkit-transition: 0.4s linear;
-moz-transition: 0.4s linear;
-o-transition: 0.4s linear;
transition: 0.4s linear;
-webkit-transition-property: width, background-color;
-moz-transition-property: width, background-color;
-o-transition-property: width, background-color;
transition-property: width, background-color;
-webkit-box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
}


etant donné que j'utilise contact form 7 la seule solution est de faire entrer les boutons radio dans le champ suivant :

[radio radio-394 class:stepformradio use_label_element default:1 "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"]

Au niveau présentation c'est nickel mais je bloque sur le dynamisme. si vous avez des conseils à me donner je suis preneur, merci beaucoup la communauté
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 7 avril 2022 à 12:19
Bonjour,

Une solution en js serait d'ajouter un écouteur (via la fonction addEventListener) sur l'événement click des inputs radio. Dans cet écouteur (l'écouteur est donc une fonction qui sera déclenchée lorsque l'utilisateur clique sur un input radio), tu pourras récupérer la valeur de l'input cliqué (1, 2, 3, etc.) puis modifier le style ou la classe css de la progress bar en fonction de cette valeur.

Est-ce que tu arrives déjà à modifier ton css pour afficher la barre avec une progression de 10 ou 20% ? Un petit exemple ?

Pour une solution plus détaillée, il faudrait plutôt nous partager le code source html de ton formulaire plutôt que le shortcode wp.
1
Salut,
oui voilà il faut utiliser la programmation événementielle pour déterminer la taille d'un élément lors du survol en lançant une fonction qui va changer l'apparence d'un élément et l'afficher.

Si 100% = 1000px alors on récupéré la valeur (value)de l'input(case à cocher) survolée de 0 à 10 et on multiplie par 10 pour obtenir la taille horizontale de la barre qui n'est pas une barre de progrès ou progress bar mais seulement une représentation visuelle de 1 à 10.
Un progress bar c'est pour indiquer l'avancement de quelque chose, en général dans le temps comme le chargement dans la age d'une ressource.

Si vous ne savez pas comment commencer aller voir par là:

https://developer.mozilla.org/fr/docs/Learn/JavaScript/Building_blocks/Events

Pour la modification on peut passer par modifier le CSS avec JavaScript c'est même le mieux.
Par ex. vous définissez la valeur "width" de votre barre de score lors du survol ou alors vous faites une classe pour chacune des 10 tailles de la barre de notation et changez celle ci en fonction de la valeur de l'élément survolé.

Ce n'est pas clair si vous le voulez au survol ou au clic pour valider.
Pour moi il serait plus logique de l'afficher uniquement au clic donc lorsqu'une valeur est choisie.
Mais si vous la mettez au survol il serait logique de l'afficher une fois validée aussi.
0