Javascript : Pb sur évenement et function

Javascript : Pb sur évenement et function - HTML/CSS - Programmation

Marsh Posté le 21-02-2012 à 13:30:29    

Bonjour à tous.
 
J'ai un gros soucis sur un bout de code, jusqu'a maintenant je croyais que cela fonctionnait bien (tester sur version 6 et 10 de firefox) mais il s'avère que j'ai des client en (beaucoup) en 3.6.1 de Firefox et qu'il ne doivent pas être migrer en version supérieur donc je dois adapter mon code pour que cela fonctionne sur les version divers de firefox :( mais je trouve pas comment et je m'en remet a vous.
 
le pire c'est que je suis prit en dépourvu faut que cela fonctionne aujourd'hui :(
 
Voila le bout de code
 

Code :
  1. //ACTION SUR LES REPONSE VIA OBSERVATEUR D'EVENEMENT JAVASCRIPT  
  2.     $(document).ready(function() {
  3.     /* see if anything is previously checked and reflect that in the view*/
  4.     $(".checklist input:checked" ).parent().addClass("selected" );
  5.      /* handle the user selections */
  6.      $(".checklist .checkbox-select" ).click(
  7.       function(event) {
  8.        // On récupère l'id de la question
  9.        var nameIpt = document.getElementById(this.id).name;
  10.        var tmpQid = nameIpt.split('_');
  11.        var qId = tmpQid[1];
  12.        //On récupère l'option de la question  
  13.         // si opt = 1 alors question multichoix
  14.         // si opt = 0 (par défaut) question choix unique
  15.         var repId = this.id.split('_');
  16.         var idRep = repId[1]
  17.         var opt = document.getElementById('opt_'+idRep).value;
  18.        if( opt == 0 ){
  19.        // on déselectionne toute les réponses.
  20.        verifChk(qId);
  21.        }
  22.        // on coche le checkbox du formulaire (celui qui est invisible)
  23.         var valueBlk = document.getElementById('value_'+idRep);
  24.         valueBlk.value = 'checked';
  25.        event.preventDefault();
  26.        // On sélectionne la bonne réponse (celui qui est visible)
  27.        $(this).parent().addClass("selected" );
  28.        $(this).parent().find(":checkbox" ).attr("checked","checked" );
  29.       }
  30.      );
  31.      $(".checklist .checkbox-deselect" ).click(
  32.       function(event) {
  33.         var repId = this.id.split('_');
  34.         var idRep = repId[1]
  35.         var opt = document.getElementById('opt_'+idRep).value;
  36.         var valueBlk = document.getElementById('value_'+idRep);
  37.         valueBlk.value = '';
  38.        event.preventDefault();
  39.        $(this).parent().removeClass("selected" );
  40.        $(this).parent().find(":checkbox" ).removeAttr("checked" );
  41.       }
  42.      );
  43.     });
  44.    /* Function permettant la progression de la barre en haut de la page  
  45.    * cela directement au modifiant la feuille de style avec la valeur width
  46.    */
  47.    function progress(value){
  48.     document.styleSheets[0].cssRules[34].style.setProperty('width',value,null);
  49.    }
  50.    /* Function qui récupère tous les checkbox de la question associé
  51.    * et qui décoche leur valeur afin de pouvoir via l'action onClick précédente de  
  52.    * de sélectionner la bonne réponse
  53.    */
  54.    function verifChk(qId){
  55.      var i;
  56.      var tabInput = document.getElementsByTagName("input" );
  57.      var n = tabInput.length;
  58.      for (i=0; i<n; i++)
  59.      {
  60.        if (tabInput[i].type.toLowerCase()=="checkbox" )
  61.        {
  62.          var name = tabInput[i].name.split('_');
  63.             if (name[1] == qId)
  64.             {
  65.              document.getElementById('d_'+name[3]).click();
  66.             }
  67.        }
  68.      }
  69.    }


 
et c'est cette ligne la qui pose probleme
 

Code :
  1. document.getElementById('d_'+name[3]).click();


 
j'ai l'erreur suivante
 

Citation :


Erreur : document.getElementById("d_" + name[3]).click is not a function
Fichier Source : http://localhost/MySondage/sondage.php?id=10#
Ligne : 96


 
j'ai essayer de commenter un maximum le code pour que cela soit plus simple de comprendre
 
Avez vous une idée ? vous en remerciant par avance

Reply

Marsh Posté le 21-02-2012 à 13:30:29   

Reply

Marsh Posté le 21-02-2012 à 13:53:04    

Bon et bien j'ai corriger tout seul le soucis en fait les ancienne version de firefox faut leur créer un simulation de click alors que ce fait tout seul pour les version récente

 

J'ai donc rajouter cette fonction

Code :
  1. /* Function permettant lde générer un évenement Onclick sur un element
  2.    * cela directement au modifiant la feuille de style avec la valeur width
  3.    */
  4.    function click_me(element) {
  5.     try { // ie
  6.      document.getElementById(element).click();
  7.     }
  8.     catch(e) {
  9.      var evt = document.createEvent("MouseEvents" ); // création de l'évenement souris
  10.      evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);  // initialisation de l'évenement
  11.      var cb = document.getElementById(element); // création de l'élement en variable
  12.      cb.dispatchEvent(evt);  // envoi de l'évenement onclick via l'élément.
  13.     }
  14.    }
 

et a la place de la ligne qui posait probleme j'ai mis cela

 
Code :
  1. //document.getElementById('d_'+name[3]).click();
  2.              elt = 'd_'+name[3];
  3.              click_me(elt);
 

si cela peut servir à quelqu'un d'autre tant mieu.


Message édité par hyptnos le 21-02-2012 à 13:54:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed