Partage
  • Partager sur Facebook
  • Partager sur Twitter

Double appel d'une fonction avec un onChange, pourquoi ?

onchange sur un select

Sujet résolu
    12 août 2011 à 14:36:40

    Bonjour,

    J'ai un problème avec l’évènement onchange appliqué sur un select.
    Je capture avec JQuery les évènements onchange sur un select donc si je sélectionne un élément dans ma liste avec la souris cela appel la fonction sans problème. Par contre si je sélectionne un élément avec le clavier (validé avec la touche entré) alors ma fonction est appelée deux fois et là je ne vois pourquoi :( .

    Les tags sont du Play! Framework.

    <div id="formView">
            <label for="project">&{'select.project'} :</label>
            <select id="projectList">
                <option class="msgSelectProject" value='0'>&{'select.project.here'}</option>
                #{list projects, as:'project'}
                <option value=${project}>${project}</option>
                #{/list}
            </select>
        </div>
        <div id="environment" hidden>
            <label for="environment">&{'select.environment'} :</label>
            <select id="environmentList">
            </select>
        </div>
    


    $('#projectList').bind('change', function() {
            $('.msgSelectProject').remove();
            $('#environment').hide();
            var idx = this.selectedIndex; 
            var which = this.options[idx].value; 
            $.ajax({
                type: "POST",            
                url: "@{Logview.getEnvironments()}",
                data: "project=" + which,                            
                beforeSend: function () { $("#divLoading").show(); },
                complete: function () { $("#divLoading").fadeOut(); },
                success: function(environments) { 
                    $('#environmentList').empty();
                    $('#environmentList').append("<option class='msgSelectEnvironment' value=0>&{'select.environment.here'}</input>");
                    for (var i=0; i<environments.length; i++) {
                        $('#environmentList').append('<option value='+environments[i]+'>'+environments[i]+'</input>');
                    } 
                    $('#environment').show('slow');
                }
            });        
        })
    


    Merci pour votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2011 à 16:04:27

      J'ai trouvé une solution à mon problème.
      Il faut enlever le focus à la liste modifiée (onChange).
      • Partager sur Facebook
      • Partager sur Twitter

      Double appel d'une fonction avec un onChange, pourquoi ?

      × 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