IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Plugin multiSelect, réaliser les événements blur et change


Sujet :

jQuery

  1. #1
    Membre actif Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Points : 212
    Points
    212
    Par défaut Plugin multiSelect, réaliser les événements blur et change
    Bonjour,

    J'utilise multiselect (avec jquery), mais j'ai un problème pour faire des "onblur" ou "onchange".

    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    window.onload = function(){
    	var sel = document.getElementsByTagName('select');
    	var control = "";
    
    	$(document).ready(function() {
    		for(var i=0; i<sel.length; i++){
    			control += "#" + sel[i].id + ",";
    
    		$(control).multiSelect({ oneOrMoreSelected: '*'}, function() {
    			blur: fon_sel(param);
    		});
    	}
    	});
    }
    Ceci marche très bien, et me permet donc de transformer tout mes select en multiSelect! Le problème, c'est qu'il me faudrait des paramètres différents pour chaque action, mais sa je peut pas le faire car je définie tout les selects en même temps!

    Quelqu'un à déjà rencontré ce problème?

    Merci.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 205
    Points : 285
    Points
    285
    Par défaut Snooky68, nous allons
    d'abord commencer par simplifier ton code. Un des secrets de jquery c'est de faire un code très léger en utilisant les 'sélecteurs' adéquates . Ton code va devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $(function(){
     
         $('select').multiSelect({ oneOrMoreSelected: '*'}, function() {
    			blur: fon_sel(param);
    		});
    })
    Jquery possédé des sélecteurs qui t'évitent d'avoir à parcourir les éléments du dom comme tu l'as fait.

    Concernant les évènements "onblur" ou "onchange" tu te retrouves un peu bloqué car tous ces éléments ont été instanciés dans la même fonction . La solution la plus simple à ce moment là est de faire un traitement conditionnel à l'intérieur de la fonction . Cela donnerait par exemple pour la fonction onchange :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
       onchange : function(){
         // on récupére l'id de l'élément que tu as changé
         id = $(this).attr('id');
     
        // on fait les traitements conditionnels
        if (id == 'totto') ... faire ceci 
        if (id == 'test')  ... faire cela
       ......
     
       //si les traitements sont identiques, mais à appliquer à un seul élément
       ma_fonction ($('#'+id))
     
      }
     
      // et en dehors du code de ta fonction sur les selects
    function ma_fonction(that){
       that.css('color' , 'red')
      // enfin tu fait les traitements que tu veux
     
    }
    Pour le traitements conditionnels tu peux aussi utiliser un switch case , ou des else if ...

    Voilà , j'espère que ma réponse t'aura éclairé.

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125

  4. #4
    Membre actif Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Points : 212
    Points
    212
    Par défaut
    Bonjour,

    Merci Sourrisseau, en effet, j'ai simplifier le code!
    Pour la résolution du problème lui-même j'ai encore des problèmes!
    Apparement mon $(this) me renvoi toujours un objet window (se qui me paraiit normal en faite), qui n'a bien sur pas d'id, et dons je ne peut rien faire!

    Je ne comprend pas vraiment pourquoi!
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		$(function() {
    			$("select").multiSelect({ oneOrMoreSelected: '*'}, function() { 
    				blur: fon_sel($(this).attr('id'));
    			});
    		});
    J'ai essayer en plaçant une fonction onBlur (comme tu la montré) mais le problème est le même, et bien sur, je ne souhaite utiliser le onBlur que se les elements select!

    Je ne suis pas très familier à jquery (ou javascript d'ailleurs) donc pas mal de chose m'échappe!

    Par exemple: Comment se fait-il que dans mon "multiSelect(" le "this" devrais me renvoyer l'objet select? (Ou alors j'ai mal compris se que tu a voulu dire!)

    Voilà, pourrait tu m'éclaircir? Je ne suis pas très douer en anglais (handicape? OUI) donc les doc ne m'aide pas beaucoup, et pour les sites fr sur jquery que j'ai trouvé, sa ne m'apporte pas vraiment de réponse clair!

    Encore merci de m'aider.

Discussions similaires

  1. Les 10 événements qui ont changé Internet selon les Webby Awards
    Par Katleen Erna dans le forum Actualités
    Réponses: 16
    Dernier message: 28/02/2021, 00h35
  2. Supprimer les évènements associés à un plugin
    Par Armaldo dans le forum jQuery
    Réponses: 2
    Dernier message: 06/12/2014, 17h30
  3. Réponses: 6
    Dernier message: 08/09/2011, 11h53
  4. [Plugin] Récupérer tous les fichiers *.java d'un workspace
    Par Satch dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 02/06/2004, 12h51
  5. [COM] Comment utiliser les événements Word ?
    Par Laurent Dardenne dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 30/05/2004, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo