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 :

Condition à moitié respectée


Sujet :

jQuery

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Par défaut Condition à moitié respectée
    Bonjour,
    J'ai le problème (incompréhensible) suivant :
    J'ai un champ de formulaire couplé à jquery.ui - autocomplete pour la recherche de code postal. Je souhaite que le visiteur ne puisse entrer que des chiffres, caractères donc interdits.
    J'ai fais le code suivant :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript" src="./js/jquery.js"></script>
    <script type="text/javascript" src="./js/jquery_ui/jquery.ui.core.min.js"></script>
    <script type="text/javascript" src="./js/jquery_ui/jquery.ui.widget.min.js"></script>
    <script type="text/javascript" src="./js/jquery_ui/jquery.ui.autocomplete.min.js"></script>
    <script type="text/javascript">
    function isInteger(n) {
        return n != "" && !isNaN(n) && Math.round(n) == n;
    }
     
    $(document).ready(function(){
        $('#ville').keyup(function() {
            var t = isInteger($('#ville').val());
            console.log(t);
     
            if (t == true) {
                $('#ville').autocomplete({
                    source: './ajax/geo.php?step=20',
                    minLength: 2,
                    select: function(event, ui) {
                        console.log(ui);
                        $('#id_ville').val(ui.item.id);
                    }
                });
            } else {
                console.log('erreur');
            }
        });
    });
    </script>
    </head>
    <body>
     
    <form>
      <input type="hidden" name="id_ville" id="id_ville" value="0" />
      <input type="text" maxlength="5" id="ville" />
    </form>
     
    </body>
    </html>
    Quand je rentre des caractères :
    - c'est ok, rien ne s'affiche au niveau de la liste des villes
    - dans la console j'ai bien la valeur false qui apparait
    - le message erreur apparait aussi

    J'efface ensuite le champ pour entrer des nombres :
    - là aussi c'est bon : la liste des villes s'affiche bien
    - dans la console j'ai bien la valeur true qui apparait
    - le message erreur n'apparait pas (normal)

    Je test de nouveau des caractères :
    - et là, pas bon : la liste des villes s'affiche pour les critères entrés dans le champ
    - par contre dans la console j'ai bien la valeur false qui apparait
    - le message erreur apparait aussi

    Je précise que la page n'est pas rechargée entre chaque test

    C'est là qu'est le problème, je ne vois pas trop pourquoi le code à la ligne 19 est exécuté !

    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    La première hypothèse qui me vient à l'esprit est un soucis d'asynchronicité :
    • tu entres des nombres
    • => la requête se lance
    • tu rentres des lettres AVANT le retour de la requête du point d'avant
    • => la requête n'est pas lancée
    • mais la réponse de la première requête arrive et rempli ton champs

    Tu peux palier au problème en rajoutant le test isInteger dans la réponse.

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, c'est juste qu'une fois l'autocomplete instancié, ben... il est fonctionnel !
    En gros, la première fois que tu entres des lettres, tu passes dans le else, l'autocomplete n'est pas instancié donc pas de complétion. Tu rentres ensuite des chiffres, tu passes donc dans le if et initialise l'autocomplete. Les fois suivantes où tu entres des lettres, tu passes dans le else, mais l'autocomplete reste instancié, donc la complétion se fait !

    Il faut passer par l'événement du plugin search.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Par défaut
    Ok, merci pour les réponses et je vais tester ce plugin.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Euh... "ce plugin" comme tu dis n'est autre que celui que tu utilises déjà !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Par défaut
    Oui, je l'avais remarqué, pas d'inquiétude là dessus :-)
    Je teste ça et si c'est ok je reviens marquer résolut

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Par défaut
    Bon, rien à faire ça ne fonctionne pas, j'ai pas du piger le fonctionnement de cette option car je ne vois pas trop comment tester ce qui est saisi dans le champ. J'ai plus qu'a relire la doc.
    Je marque résolu quand même...

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

Discussions similaires

  1. condition pas respectée et atof :(
    Par membreComplexe12 dans le forum C++
    Réponses: 8
    Dernier message: 06/12/2012, 19h36
  2. [XL-2010] Condition non respecté dans listbox
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2012, 23h18
  3. [AC-2003] Boucle DO, incrementation si condition pas respectée
    Par jubourbon dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/10/2011, 17h32
  4. [OL-2003] Condition mal respectée
    Par FailMan dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 13/09/2010, 09h48

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