IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Appel JS dans une Modalbox


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut Appel JS dans une Modalbox
    Bonjour,

    Je rencontre un problème lors d'un appel AJAX à partir d'une Modalbox.
    La modalbox s'ouvre, proposant entre autre un textarea sur lequel est placé un "event observer" utilisant les librairies prototype et scriptaculous qui permet de mettre à jour un prix en fonction du nombre de caractères entré dans le textarea.
    En fait, ce code marche bien sur tous les navigateurs... sauf Internet Explorer 6 & 7!

    A côté de ce problème, j'ai testé l'exécution d'un script JS "standard" (un C/C d'un code source proposé par developpez.net) et ce code ne s'exécute pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type='text/javascript'>
    function compteCarac(idTextarea, idSpan)
    {
    var t = document.getElementById(idTextarea);
    var s = document.getElementById(idSpan);
     
    s.innerHTML = t.value.length;
    }
    </script>
    <textarea id="text8" rows="4" cols="30" onkeyup="compteCarac('text8', 'nbCarac8')"></textarea>
    <span id="nbCarac8">0</span> caractère(s)
    Comme la modalbox est elle-même un appel JS, il y a sûrement une astuce pour permettre de réaliser d'autres appels JS une fois dans la modalbox... comment doit-on procéder?


    Je compte faire des tests pour voir si le problème vient de la modalbox, mais je suis preneur de tout type de tuyau pour avancer dans la résolution de ce problème!

    Pour les curieux, l'URL de recette: http://www.studecho.com/frontend_re7.php
    Cliquez sur le drapeau anglais puis sur le bouton "Buy now" de l'article représentant une plaque d'immatriculation pour constater ce problème (et oui, il y a aussi un gros problème de mise en forme, mais c'est moins grave pour le moment!).

    Merci à toutes et à tous!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pourrais-tu nous montrer le code d'appel de ta modalbox ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Pourrais-tu nous montrer le code d'appel de ta modalbox ?
    Code d'appel de la modalbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="Modalbox.show(this.href, {width: 750}); return false;" href="/emailpassion/frontend_dev.php/article/perso/1247/0">Acheter</a>
    Code d'appel AJAX de MAJ du prix:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script type="text/javascript">
    //<![CDATA[
    new Form.Element.EventObserver("perso_text", function(element, value) {new Ajax.Updater('perso_price_update', '/emailpassion/frontend_dev.php/article/perso/price/update/', {asynchronous:true, evalScripts:false, onComplete:function(request, json){new Effect.Fade('perso_price_update_loading', {});new Effect.Appear
    ('perso_price_update', {});new Effect.Highlight('perso_price_update', {});}, onLoading:function(request, json){new Effect.Appear('perso_price_update_loading', {});}, parameters:'param=' + value + '&id='+1247+ '&max=' +30});});
    //]]>
    </script>
    Note: ce code est généré automatiquement par un "helper" du FWK PHP Symfony...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comme la modalbox est elle-même un appel JS, il y a sûrement une astuce pour permettre de réaliser d'autres appels JS une fois dans la modalbox... comment doit-on procéder?
    http://code.google.com/p/modalbox/wi...ningJavaScript

    Cet article m'a aidé à rendre compatible le script dans la Modalbox.

    Mais comme pour l'AJAX, ca ne marche toujours pas avec Internet Explorer 6 & 7... merci pour vos idées!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Voici un exemple de code JS qui marche partout sauf sur IE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <textarea name="perso_text" id="perso_text" cols="30" rows="2"
    onkeyup="countChar('perso_text', 'nbChar')"></textarea>
    <script type='text/javascript'>
            countChar = function(idTextarea, idSpan) {
                    var t = document.getElementById(idTextarea);
                    var s = document.getElementById(idSpan);
                    s.innerHTML = t.value.length;
            }
    </script>
    <br/><br/>
    <span id="nbChar">0</span>&nbsp;character(s)
    J'ai fait un test en statique avec une modalbox ne comprenant qu'un textarea et ce script, et IE ne veut toujours rien savoir...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 64
    Points
    64
    Par défaut
    Le problème était dû à une petite coquille dans la librairie "modalbox.js" - je n'ai pas réussi à trouver où - mais en rechargeant l'original, le problème est réglé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appels fonctions dans une boulce
    Par sarnov dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2009, 20h56
  2. Appeler MATLAB dans une application C#
    Par sali lala dans le forum MATLAB
    Réponses: 3
    Dernier message: 31/12/2008, 09h27
  3. Appel fonction dans une requête
    Par the java lover dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 07/10/2008, 11h57
  4. Réponses: 10
    Dernier message: 07/09/2008, 13h38
  5. Pb appel fonction dans une lib
    Par mamok dans le forum MFC
    Réponses: 14
    Dernier message: 01/02/2006, 18h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo