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 :

Désactiver une fonction quand son selecteur n'est plus valide


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Désactiver une fonction quand son selecteur n'est plus valide
    Bonjour,

    Question de noob en jquery :

    J'ai un input dans lequel un internaute peut y entrer un nombre.
    J'aimerai qu'en fonction de sa valeur, ce nombre change de class une première fois.
    Et qu'il ne change plus par la suite.

    J'ai fait un exemple simplifié ici : http://jsfiddle.net/6pTUW/1/
    Si je tape "1", il ne se passe rien et c'est bien.
    Si je rajoute "2" (ça mets "12" dans mon input), il change de class et c'est bien.
    Mais j'aimerai que ça s'arrête là.
    Car si je rajoute "3" (ça mets "123" dans mon input), il ajoute une nouvelle class que je ne souhaite pas. Pourtant ma fonction ne devrait plus s'appliquer à cet input dont la class "dizaine" ne correspond plus au sélecteur ".unite" de la fonction.

    Quelle solution simple je peux mettre en place pour corriger ce comportement ?

    Merci de votre aide.

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Je ne suis pas certain d'avoir compris l'objectif final, mais d'après ce que j'en ai compris :

    unbind keyup devrait faire l'affaire ..

    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
    $('.unite').keyup(function(){
        var valeur = $(this).val();
        if ( valeur > 9 ) {
            $(this).removeClass('unite');
            $(this).unbind('keyup');
            if ( valeur > 99 ) {
                if ( valeur > 999 ) {
                    $(this).addClass('millier');
                }
                $(this).addClass('centaine');
            }
            $(this).addClass('dizaine');
        }
        // Cette partie sert juste à avoir un retour visuel
        var classes = $(this).attr('class');
        $('#class').text(classes);
    });

    edit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $('.unite').keyup(function(){
        var val= $(this).val();
        var classes = ["unite","dizaine","centaine","millier"];
        if ( val > 9 ) {
            $(this).removeClass('unite');
            $(this).unbind('keyup');
            $(this).addClass(classes[Math.min(4,val.length)-1]);
        }
        // Cette partie sert juste à avoir un retour visuel
        $('#class').text($(this).attr('class'));
    });

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Super ! C'est exactement ce que je cherchais : .unbind('keyup');

    Et en plus tu propose d'autres modifications qui rendent le code bien plus élégant.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/07/2013, 14h30
  2. [Dojo] executer une fonction quand une autre est terminée
    Par arasm dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 25/12/2009, 11h46
  3. executer une fonction quand une autre est terminée
    Par arasm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/12/2009, 17h38
  4. [DOM] appeler une fonction via son nom (qui est une string)
    Par elekis dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/07/2008, 13h06
  5. appeler une fonction connaissant son nom (en string)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 20/07/2004, 00h46

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