web-dev-qa-db-fra.com

Evénement de changement de déclenchement du menu déroulant

Je veux déclencher l'événement de modification de la liste déroulante dans $ (document) .ready en utilisant jquery.

J'ai un menu déroulant en cascade pour le pays et l'état dans la page de détails de l'utilisateur. Comment puis-je définir la valeur (qui provient de la base de données en fonction de l'ID utilisateur) pour le pays et l'état dans MVC avec C #.

79
Prasad

Je ne connais pas beaucoup JQuery, mais j'ai entendu dire que cela permettait de déclencher des événements natifs avec cette syntaxe.

$(document).ready(function(){

    $('#countrylist').change(function(e){
       // Your event handler
    });

    // And now fire change event when the DOM is ready
    $('#countrylist').trigger('change');
});

Vous devez déclarer le gestionnaire d'événement change avant d'appeler trigger () ou change (), sinon il ne sera pas déclenché. Merci pour la mention @LenielMacaferi.

Plus d'informations ici .

173
Christophe Eblé

Essaye ça:

$(document).ready(function(event) {
    $('#countrylist').change(function(e){
         // put code here
     }).change();
});

Définissez l'événement de modification et déclenchez-le immédiatement. Cela garantit que le gestionnaire d'événements est défini avant de l'appeler.

Peut-être tard pour répondre à l'affiche originale, mais quelqu'un d'autre pourrait tirer avantage de la notation abrégée, et cela suit l'enchaînement de jQuery, etc.

chaînage jQuery

12
mlnyc

Essaye ça:

$('#id').change();

Travaille pour moi.

Sur une ligne avec réglage de la valeur: $('#id').val(16).change();

3
d.popov

Si vous essayez d’avoir des listes déroulantes liées, la meilleure façon de le faire est d’avoir un script qui renvoie la boîte de sélection prédéfinie et un appel AJAX qui le demande.

Voici la documentation de la méthode Ajax de jQuery si vous en avez besoin.

$(document).ready(function(){

    $('#countrylist').change(function(e){
        $this = $(e.target);
        $.ajax({
            type: "POST",
            url: "scriptname.asp", // Don't know asp/asp.net at all so you will have to do this bit
            data: { country: $this.val() },
            success:function(data){
                $('#stateBoxHook').html(data);
            }
        });
    });

});

Puis avoir une étendue autour de votre zone de sélection d'état avec l'id de "stateBoxHook"

2
xenon

sinon, vous pouvez mettre l'attribut onchange dans la liste déroulante elle-même, cette fonction appellera certaines fonctions jquery de la sorte.

<input type="dropdownlist" onchange="jqueryFunc()">

<script type="text/javascript">
$(function(){
    jqueryFunc(){
        //something goes here
    }
});
</script>

espérons que celui-ci vous aide, et notez s'il vous plaît que ce code est juste un brouillon, non testé sur aucune idée. Merci

1
dave