34 votes

Déclencher un événement chaque fois qu'un élément DropDownList est sélectionné avec jQuery

J'ai une liste déroulante: <asp:DropDownList id="dropdownid" runat="server" class=blah"/>

dans mon jQuery, je assigner événement de changement comme ceci:

$('#dropdownid').change(function() {......});

Maintenant, cela fonctionne lorsque je choisis une valeur différente à partir de la liste déroulante, cependant disons que je veux pour sélectionner la même valeur. (parce que je veux faire un autre appel avec la même valeur) Donc, lorsque je sélectionne à nouveau, (sans modification de la valeur) juste en cliquant sur la valeur sélectionnée dans le menu déroulant et sélectionner " elle encore, aucun événement se déclenche. Est-il un événement en jquery que j'ai à lui attribuer? quelle est la solution?

28voto

RSolberg Points 17001

Pour développer Vincent Ramdhanie de la suggestion, de prendre un coup d'oeil à quelque chose comme cela. Essentiellement, vous vous retrouvez avec votre propre fonction jQuery qui vous permettra de réutiliser ailleurs.

Étape 1: Créer la Fonction jQuery

(function($) {
    $.fn.selected = function(fn) {
        return this.each(function() {
            var clicknum = 0;
            $(this).click(function() {
                clicknum++;
                if (clicknum == 2) {
                    clicknum = 0;
                    fn(this);
                }
            });
        });
    }
})(jQuery);

Étape 2: assurez-vous que le nouvellement créé Fonction jQuery du fichier est référencé d'utilisation:

<script src="Scripts/jqDropDown.js" type="text/javascript"></script>

Étape 3: Utiliser la nouvelle fonction:

$('#MyDropDown').selected(function() {
    //Do Whatever...
});

INFO D'ORIGINE
Avec votre code en cours, la sélection de la même valeur à partir de l'asp:DropDownList ne se déclenche pas l'événement de changement.

Vous pourriez essayer d'ajouter une autre fonction jQuery pour la .le flou de l'événement. Ce serait le feu lorsque le contrôle perd le focus:

$('#dropdownid').blur(function() {......});

Si ils flou ne fonctionne pas pour vous, je voudrais ajouter un bouton actualiser ou quelque chose qui influent sur les feux de la fonction que vous essayez d'utiliser.

16voto

Vincent Ramdhanie Points 46265

Essaye ça:

 $(document).ready(function(){
 var clicknum = 0;
 $("#dropdownid").click(function(){
 	clicknum++;
	if(clicknum == 2){
	    alert($(this).val());
		clicknum = 0;
	}
 });
});
 

Tout d'abord, vous créez un nombre de clics variable pour suivre le nombre de clics, car vous ne souhaitez pas que l'événement se déclenche chaque fois que l'utilisateur clique sur la liste déroulante. Le deuxième clic correspond à la sélection effectuée par l'utilisateur.

Si le nombre de clics est égal à 2, il s'agit d'un second clic. Lancez l'événement et réinitialisez le nombre de clics sur 0 pour la prochaine fois. Sinon ne fais rien.

7voto

Adam Lassek Points 18918

Il suffit de connecter les gestionnaires d’événements clic aux contrôles d’option inclus au lieu des contrôles de sélection:

 $('#dropdownid option').click(function() {......});
 

Cela ne se déclenche que lorsque vous sélectionnez une option dans la liste déroulante, qu'elle change ou non.

3voto

ern Points 1150

Selon l' API :

L'événement change se déclenche lorsqu'un contrôle perd le focus entré et que sa valeur a été modifiée depuis l'obtention du focus.

Vous voudrez peut-être essayer la souris ou les événements de clic comme alternative.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X