Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme select qui redirige n'importe quand

Sujet résolu
    11 mars 2010 à 20:49:09

    Bonjour, j'ai un problème bizare avec mon select : j'ai attribué à chaque option un "onclick=location.href='...'" mais quand on met un trop grand nombre d'option, lorsqu'on clique sur le select pour choisir son "option", ça se redirige sans qu'on ait préalablement cliqué sur une "option".

    Voici mon code:
    function ...(lien){
    
    	var objet = document.getElementById('...');
    
    	if(objet.style.display == "none" || !objet.style.display)
    	{
    
    		objet.innerHTML = "<p style=\"text-align: center;\"><select name=\"pays\" id=\"pays\"><optgroup label=\"Europe\"><option value=\"Europe_France\" onclick=\"location.href='inter.php?continent=Europe&origine=France'\">française</option><option value=\"Europe_Allemagne\" onclick=\"location.href='inter.php?continent=Europe&origine=Allemagne'\">allemande</option><option value=\"Europe_Autriche\" onclick=\"location.href='inter.php?continent=Europe&origine=Autriche'\">autrichienne</option><option value=\"Europe_Belgique\" onclick=\"location.href='inter.php?continent=Europe&origine=Belgique'\">belge</option><option value=\"Europe_Chypre\" onclick=\"location.href='inter.php?continent=Europe&origine=Chypre'\">chypriote</option><option value=\"Europe_Danemark\" onclick=\"location.href='inter.php?continent=Europe&origine=Danemark'\">dannoise</option><option value=\"Europe_Espagne\" onclick=\"location.href='inter.php?continent=Europe&origine=Espagne'\">espagnole</option><option value=\"Europe_Finlande\" onclick=\"location.href='inter.php?continent=Europe&origine=Finlande'\">finlandaise</option><option value=\"Europe_Grèce\" onclick=\"location.href='inter.php?continent=Europe&origine=Grece'\">grecque</option><option value=\"Europe_Irlande\" onclick=\"location.href='inter.php?continent=Europe&origine=Irlande'\">irlandaise</option><option value=\"Europe_Italie\" onclick=\"location.href='inter.php?continent=Europe&origine=Italie'\">italienne</option><option value=\"Europe_Luxembourg\" onclick=\"location.href='inter.php?continent=Europe&origine=Luxembourg'\">luxembourgeoise</option><option value=\"Europe_Malte\" onclick=\"location.href='inter.php?continent=Europe&origine=Malte'\">maltaise</option><option value=\"Europe_Monaco\" onclick=\"location.href='inter.php?continent=Europe&origine=Monaco'\">monégasque</option><option value=\"Europe_Norvège\" onclick=\"location.href='inter.php?continent=Europe&origine=Norvege'\">norvégienne</option><option value=\"Europe_Pays-Bas\" onclick=\"location.href='inter.php?continent=Europe&origine=Hollande'\">hollandaise</option><option value=\"Europe_Portugal\" onclick=\"location.href='inter.php?continent=Europe&origine=Portugal'\">portugaise</option><option value=\"Europe_Royaume-Uni\" onclick=\"location.href='inter.php?continent=Europe&origine=Royaume-uni'\">anglais</option><option value=\"Europe_Russie\" onclick=\"location.href='inter.php?continent=Europe&origine=Russie'\">russe</option></optgroup></select></p>";	
    		objet.style.display = "block";
    
    		objet.style.overflow = "hidden"; 
    
    		lien.innerHTML = "";
    
    		
            var hFinal      =     100;
            var hActuel     =     0;
    
            var timer;
    
            var fct = function ()
    
            {
    
                    hActuel+= 20;
    
                    objet.style.height = hActuel + 'px';
    
                    if( hActuel > hFinal)
    
                    {
                            clearInterval(timer);
                            objet.style.overflow    =   'inherit';
                    }
            };
    
            fct();
    
    timer = setInterval(fct,40);
    
    	}else if(objet.style.display == "block"){
    
    	var hFinal      =     0; 
            var hActuel     =     150;
            var timer;
            var fct = function ()
            {
                    hActuel  -=   50;
    
                    objet.style.height     =	 hActuel      +     'px';
    
                    if( hActuel < hFinal)
                    {
                            clearInterval(timer);
                            objet.style.overflow    =   'inherit';
    			objet.style.display     =   "none";
                    }
            };
            fct();
    		timer = setInterval(fct,40);
    		lien.innerHTML = "<p style=\" text-align: center;\"></p>";	
    	}
    }
    


    Ce code-là marche mais lorsqu'on rajoute un <option>, là ça ne marche plus.

    Voilà, merci d'avance pour votre aide ;)
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2010 à 10:04:25

      Il est déconseillé d'utiliser onclick sur les options des selects (ça ne marche pas avec certains navigateurs et marchent mal avec d'autres )

      Il vaut mieux mettre un onchange sur le select puis récupérer la valeur de l'option sélectionné avec this.value

      Ainsi dans ton cas tu peux mettre l'url désirée dans le value de chaque option puis sur le select tu mets un onchange="location.href=this.value;"

      OU, vu que toutes les url sont très proche, tu peux ne mettre en value la valeur à mettre derrière ton origine= et tu mets donc dans le select: onchange="location.href='inter.php?continent=Europe&origine='+this.value;"
      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2010 à 20:58:46

        Merci beaucoup, ça marche :D
        • Partager sur Facebook
        • Partager sur Twitter

        probleme select qui redirige n'importe quand

        × 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