Auteur Sujet: Javascript OnChange sur un select  (Lu 9030 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Javascript OnChange sur un select
« le: 08 Septembre 2011 à 11:11:21 »
Salut les codeurs

Je voulais créer en tête d'une longue page une zone de liste avec ancres.
Ça fonctionne impeccable sur FireFox et Opera, mais pas moyen avec Internet Explorer !!!

J'ai lu pas mal de truc à ce sujet et il paraitrait que IE n’exécute pas les OnChange sur un select.
Comment contourner le problème ?

En mettant des boites alert, j'ai bien le même résultat affiché.

Voici le bout de code :

$requete =
                "SELECT * FROM temp ORDER BY $tri ASC " ;
$resultat = mysql_query($requete);

        echo'<select name="resultat" onchange="self.location.href=this.value;">';
        while ($row = mysql_fetch_array($resultat) )
        {
        ?>
        <option value="#<?php echo $row['id']; ?>"><?php echo $row[$tri]; ?></option>
        <?php
        
}
        echo
'</select>';

Merci d'avance  -_-

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Javascript OnChange sur un select
« Réponse #1 le: 08 Septembre 2011 à 11:20:18 »
Bonjour,

Utilise l'event "Click" plutôt que "Change" (donc "onclick" au lieu de "onchange").
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Re : Javascript OnChange sur un select
« Réponse #2 le: 08 Septembre 2011 à 11:25:41 »
J'avais tout essayé : OnClick, OnChange, OnBlur...  :angry:

Ce qui est étonnant, c'est qu'avec IE 7, ça fonctionne, mais pas avec IE 8 !!!


« Modifié: 08 Septembre 2011 à 11:30:40 par dom »

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Javascript OnChange sur un select
« Réponse #3 le: 08 Septembre 2011 à 11:34:03 »
Pour faire plus simple, je ne saurais trop te conseiller d'utiliser la librairie jQuery qui se chargera pour toi du cross-browsing : http://api.jquery.com/change
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Re : Javascript OnChange sur un select
« Réponse #4 le: 08 Septembre 2011 à 11:38:13 »
Tu crois que ce sera plus simple pour moi  ^_^

Je vais quand même regarder ça.

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Javascript OnChange sur un select
« Réponse #5 le: 08 Septembre 2011 à 12:20:10 »
Ne te sous estime pas :P !
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne kephri

  • J'aime pas les éléphants, mais les mammouths oui
  • Débutant
  • *
  • Messages: 31
  • François
Re : Javascript OnChange sur un select
« Réponse #6 le: 09 Septembre 2011 à 07:39:47 »
Bah au pire, fait péter une méthode spécifique IE 7/8, ça ne marche pas ?

Genre dans le head <if lte IE 7 script src=script.js> ? C'est pas possible j'ai un doute ?

De toute les façons IE 7 je m'évertue aussi à le faire fonctionner avec ma petite audience mais c'est mort. Disons que maintenant c'est IE 8 le standard, il fonctionne encore à peu près potablement (avec 2 ans de retard sur les navigateurs modernes et les sempiternelles différences de marge dûes au moteur de rendu des pages web perrave), IE 7 reste la préhistoire du web et le 9 complètement la loose.

Si le bug persiste encore j'ai une autre technique de ninja intégration  :

<meta http-equiv="X-UA-Compatible" content="IE=8" />
si cela ne marche pas sous IE cela va forcer un comportement comme IE 8

<meta http-equiv="X-UA-Compatible" content="IE=7" />
Idem pour le 7

Tu mets cela dans le <head>.


Côté IE 9 stresses pas il n'est compatible avec rien comme tout bon browser Microsoft qui se respecte et ce depuis 1999.

Et évidemment mes petits hacks font désordre quand on veut essayer de faire du XHTML strict mais bon, pas le choix c'est du M$ et on a du boulot, pas que ça à faire de construire des sites spécifiquement pour un navigateur maintenant heureusement mourant :)

Si en dernier ressort même avec le X-UA compatible ton code ne marche pas, appelles un vétéran de la concaténation ou un vétéran du Java ils seront certainement d'où vient la cause de l'action et inaction du script entre les différents browsers (déjà vu avec un vétéran java il savait d'avance pourquoi le script était bon et pourquoi il ne fonctionnerait pas sous IE).

Pour une fois si cela ne suffit pas, je te conseille comme Just un Jquery, ca va bien plomber ton site de 75 Ko en plus, mais ça gère bien le cross-browsing en effet...
« Modifié: 09 Septembre 2011 à 07:59:12 par kephri »
François
Commando de la crêpe au blé noir à l'andouille oignon
Béret vert du XHTML et CSS
Padawan du PHP
Senior en relation client multicanale

Hors ligne kephri

  • J'aime pas les éléphants, mais les mammouths oui
  • Débutant
  • *
  • Messages: 31
  • François
Re : Javascript OnChange sur un select
« Réponse #7 le: 09 Septembre 2011 à 09:21:08 »
En plus attend inutile de faire appel à JQuery il y a une erreur de syntaxe importante dans ton code je l'avais raté *se fouette*  :angry::

Voilà qui est bon en syntaxe :

<option value="#" "Onchange="javascript:bidule;"><?php echo $row['id']; ?>"><?php echo $row[$tri]; ?></option>
C'est là que tu devrais mettre ton Onchange je pense en corrigeant l'erreur de syntaxe ! Essaie déjà de corriger l'erreur XHTML (termine value="# avec ">) ensuite essaies ma ligne complète ci-dessus, si cela ne marche toujours pas; bien évidémment en remplaçant bidule par ton call JavaScript.

Ah là là même le plus génial des programmeurs web n'est jamais à l'abri de la plus toine faute de syntaxe :) La règle se confirme éternellement et je suis le premier à en souffrir :)
« Modifié: 09 Septembre 2011 à 09:33:35 par kephri »
François
Commando de la crêpe au blé noir à l'andouille oignon
Béret vert du XHTML et CSS
Padawan du PHP
Senior en relation client multicanale

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Re : Javascript OnChange sur un select
« Réponse #8 le: 09 Septembre 2011 à 10:07:07 »
Merci de t'occuper de mon cas  -_-

Mais je ne pense pas qu'il y ait l'erreur de syntaxe là où tu le dis puisque mes zone de liste sont bien construites et le html est bien construit également .
Le # est pour la construction de l'ancre.

D'un autre côté il est plutôt conseillé de mettre l'appel JS au niveau du Select plutôt que Option, non ?
De toute façon, j'ai fait ta correction pour voir et les zones de liste sont mal remplies  :huh:

Dom

Hors ligne kephri

  • J'aime pas les éléphants, mais les mammouths oui
  • Débutant
  • *
  • Messages: 31
  • François
Re : Javascript OnChange sur un select
« Réponse #9 le: 11 Septembre 2011 à 02:31:58 »
Bonsoir,

Et si, c'est le genre d'erreur courante, observes bien la ligne que j'ai copiée au-dessus, s'il te plaît : <option> par rapport à la tienne, ton début de phrase HTML "<option value="chose" n'est pas fermé; cela devrait être "<option value="chose"><tag>...</option>

La différence est là

Cordialement,
« Modifié: 11 Septembre 2011 à 02:35:54 par kephri »
François
Commando de la crêpe au blé noir à l'andouille oignon
Béret vert du XHTML et CSS
Padawan du PHP
Senior en relation client multicanale

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Re : Javascript OnChange sur un select
« Réponse #10 le: 11 Septembre 2011 à 10:32:21 »
Non, non, tu fais erreur.
Ma balise option est bien fermée après la commande PHP  -_-

Je te rappelle que mon code fonctionne parfaitement sous FF, Opéra et IE7.
Je n'ai le problème que sous IE8, le onchange ne fais pas son office.

Par contre, en enregistrant la page générée en HTML, le OnChange fonctionne bien sous IE 8 !!!

Va comprendre, Charles ... ^_^

Hors ligne dom

  • Habitué
  • **
  • Messages: 185
Re : Javascript OnChange sur un select
« Réponse #11 le: 15 Septembre 2011 à 20:41:28 »
Problème résolu.
Ni le code ni ce pauvre javascript ne sont responsables.  -_-

C'est IE 8 qui ne tient pas compte des ancres lorsqu"elles sont vides.
Un petit "&nbsp;" entre les balises <A id>et </A> et le tour est joué.

Hors ligne kephri

  • J'aime pas les éléphants, mais les mammouths oui
  • Débutant
  • *
  • Messages: 31
  • François
Re : Javascript OnChange sur un select
« Réponse #12 le: 17 Septembre 2011 à 00:19:59 »
Bonsoir Dom,

Encore tu pouvais utiliser ma méthode, elle permettait justement d'isoler la CSS de IE 8 par ex.

Mais bon, tant mieux si tout est réglé  :mellow:

Conclusion que je constate depuis 1999 : Rhaa saleté de IE :)
« Modifié: 17 Septembre 2011 à 00:27:38 par kephri »
François
Commando de la crêpe au blé noir à l'andouille oignon
Béret vert du XHTML et CSS
Padawan du PHP
Senior en relation client multicanale