Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interragir avec des <select> en jQuery

    12 juillet 2018 à 11:50:27

    Bonjour,

    Je code une petite fonction afin d'afficher une liste déroulante pour sélectionner une date.

    Voici le code php de cette fonction:

    <?php
    //Fonction qui permet d'ajouter un module afin de récupérer une date
    function ajouterSelectJour($IDjour, $IDmois, $IDannee, $jour = 0, $mois = 0, $annee = 0){
    	
    	//Si le jour, le mois ou l'année n'est pas renseigné, la veleur par défaut est la valeur du jour
    	if($jour == 0){$jour = date('d');}
    	if($mois == 0){$mois = date('m');}
    	if($annee == 0){$annee = date('Y');}
    	
    	//Détermination du nombre de jours possibles dans le mois renseigné
    	$nombreDeJours = cal_days_in_month(CAL_GREGORIAN, $mois, $annee);
    	
    	//Affichage des listes déroulantes
    	
    	//Affichage des jours
    	echo '<select id='.$IDjour.'>';
    	for($i=1 ; $i <= 31 ; $i++){
    		if($i == $jour){
    			echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
    		}elseif($i > $nombreDeJours){
    			echo '<option value="'.$i.'" style="background-color : D2D2D2" disabled="disabled">'.$i.'</option>';
    		}else{
    			echo '<option value="'.$i.'">'.$i.'</option>';
    		}
    	}
    	echo '</select>';
    	 
    	 //Affichage des mois
    	echo '<select id='.$IDmois.'>';
    	for($i=1 ; $i <= 12 ; $i++){
    		if($i == $mois){
    			echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
    		}else{
    			echo '<option value="'.$i.'">'.$i.'</option>';
    		}
    	}
    	echo '</select>';
    	
    	//Calcul des bornes pour la sélection des années
    	$anneeMin = $annee - 30;
    	$anneeMax = $annee + 50;
    	
    	//Affichage des années
    	echo '<select id='.$IDannee.'>';
    	for($i=$anneeMin ; $i <= $anneeMax ; $i++){
    		if($i == $annee){
    			echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
    		}else{
    			echo '<option value="'.$i.'">'.$i.'</option>';
    		}
    	}
    	echo '</select>';
    }
    ?>


    et voici le résultat que j'obtiens :

    Comme on peut le voir ici, je grise et rend non-sélectionnable les dates du 29 au 31 puisque le mois choisi et février et que 2018 n'est pas bissextile. Ce que j'aimerais maintenant apporter comme amélioration, c'est de pourvoir, lorsque l'utilisateur sélectionne un nouveau mois, mettre à jour la liste des jours afin de griser ou dé-griser des dates.

    Je sais que pour faire cela, je dois utiliser du javascript et j'aimerai tout particulièrement le faire en jQuery. J'a donc suivit un cours sur OC afin de découvrir jQuerry avant de poster ce sujet (afin de savoir quand même un peu de quoi on parle).

    Je m'en remet donc à votre expertise puisque je ne sais pas trop comment faire. Je sais qu'il faut que j'arrive à sélectionner mes listes par des $('select') mais après je ne sais pas comment interagir avec leurs données.

    -
    Edité par PierreCoustance 12 juillet 2018 à 11:51:45

    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2018 à 11:56:45

      Bonjour, as-tu suivi le cours de base du JS de OC et celui de JS pour le web de OC, ainsi que le cours sur le les bases du web HTML & CSS)? La connaissance des bases du JS est importante, JQuery n'est qu'une librairie et ne remplace pas le JS. Pour revenir à ta question, ce que tu veux, c'est accéder aux options du select pour en désactiver certaines. Renseigne toi sur les select options en HTML, et comment modifier des propriétés en Jquery.

      Et sinon, recherche google, "jquery disable select option", quatrième lien.... https://learn.jquery.com/using-jquery-core/faq/how-do-i-disable-enable-a-form-element/

      -
      Edité par Genroa 12 juillet 2018 à 11:57:10

      • Partager sur Facebook
      • Partager sur Twitter
      /!\ Si je cesse de répondre c'est parce que vous êtes venus poster sans avoir suivi les cours de base sur le sujet. /!\
        12 juillet 2018 à 11:57:32

        Et quelle est la condition qui permettrait de grisé et dégrisé certaines dates ?
        • Partager sur Facebook
        • Partager sur Twitter

        Interragir avec des <select> en jQuery

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown