Appel de fonction JS evenement onchange

vincentdu76 -  
 Stago666 -
Bonjour,

Mon appel d'une fonction JS sur l'évènement onchange ne passe pas. Sauriez vous pourquoi ?

<SELECT style="margin: 0 0 0 300px; overflow: auto; height:100px;" NAME="societe_ld" onChange='change_ld(this.value,this.id);' multiple="multiple">

8 réponses

  1. Breub62 Messages postés 3452 Statut Membre 369
     
    Test en mettant un alert() dans ton onChange pour savoir si c'est le onchange qui bugg ou la fonction que tu appelle
    0
  2. vincentdu76
     
    le alert ne passe pas, que ce soit dans la fonction onchange ou en dehors...
    0
  3. vincentdu76
     
    Je rajoute la fonction :

    function change_ld(value_ld,id_ld)
    {
    alert('OK');
    var conteneur   = document.getElementById('indiv_modtaxe');
    
    var html      = document.createElement('p');
    document.getElementById('hidden').value=(i);
    i=i+1;
    var code= "<input type='text' name='nom_societe_'"+i" id='"+id_ld+"' value='"+value_ld+"'/>";
    html.innerHTML=(code);
    
    conteneur.appendChild(html);
    }
    0
  4. Breub62 Messages postés 3452 Statut Membre 369
     
    En faisant ça :

    <SELECT style="margin: 0 0 0 300px; overflow: auto; height:100px;" NAME="societe_ld" onChange="alert('aaa');" multiple="multiple">


    Ca n'affiche pas d'alerte??
    0
    1. vincentdu76
       
      Si si bien sur. Mais ça ne l'affiche pas si je le met dans la fonction.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Breub62 Messages postés 3452 Statut Membre 369
     
    Si tu as bien ton alert (ce qui doit marcher j'ai testé ton code) c'est que tu as un problème avec ta fonction. Sous firefox tu peux faire Ctrl+Maj+J qui te permet de débugger js ; tu y verras sûrement plus clair...
    0
  7. vincentdu76
     
    var code= "<input type='text' name='nom_societe_'"+i" id='"+id_ld+"' value='"+value_ld+"'/>";


    C'est cette ligne qui ne passe pas...
    0
    1. maka54 Messages postés 721 Statut Membre 80
       
      var code= "<input type='text' name='nom_societe_"+i+"' id='"+id_ld+"' value='"+value_ld+"'/>"; 


      la simple quote qui dois etre à la fin et non après ton underscore

      et avec un + apres i également
      0
  8. Breub62 Messages postés 3452 Statut Membre 369
     
    Donc ton alert('OK') fonctionne???

    Sinon là je vois pas trop. Est-ce que value_ld et id_ld sont bien récupérés?
    0
  9. vincentdu76
     
    Finalement ça marche, enfin pas tout...

    function change_ld(value_ld,id_ld)
    {
    
    var conteneur   = document.getElementById('indiv_modtaxe');
    
    var html      = document.createElement('p');
    alert('Message d\'alerte à utiliser avec moderation');
    
    
    var i =document.getElementById('hidden');
    i=i+1;
    document.getElementById('hidden').value=(i);
    
    var code= "<input type='text' name='nom_societe_"+i+"' id='"+id_ld+"' value='"+value_ld+"'/>";
    
    html.innerHTML=(code);
    
    conteneur.appendChild(html);
    
    }


    il ne récupère pas le id_ld et met id=""
    en plus dans le name il met
    nom_societe_[object HTMLDivElement]1


    ??
    0
    1. Breub62 Messages postés 3452 Statut Membre 369
       
      Pour ça nom_societe_[object HTMLDivElement]1 c'est sûrement ton i qui est mal initialisé
      Et s'il met id="" c'est que tu récupère mal id_ld...

      Je sais que ça n'aide pas mais je ne peux pas plus t'aider. Bon courage
      0
    2. Stago666
       
      2 choses toutes bêtes :
      var i =document.getElementById('hidden')


      document.getElementById renvoie un NodeElement (une sorte de lien vers l'objet) donc tu n'auras aucune valeur utilisable directement. Si tu cherche à récupérer la "value" de "hidden" :
      var i =document.getElementById('hidden').value


      Pour l'id mal récupéré, en faites si, il est bien récupéré, juste que ton objet n'en possède pas :

      <SELECT style="margin: 0 0 0 300px; overflow: auto; height:100px;" NAME="societe_ld" onChange='change_ld(this.value,this.id);' multiple="multiple">


      Donc il ne récupérera rien...

      Le ".value" d'un select récupère la value de l'option sélectionné (pas sûr de ce qu'il va vraiment cherché avec un multiple) mais le ".id" d'un select récupère l'ID du select pas des options à l'intérieurs.
      0