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

AJAX Discussion :

Mise à jour SELECT à réception des données


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Mise à jour SELECT à réception des données
    Voici une page que je réalise actuellement : http://www.1clic1don.fr/inscription2.php
    Sur cette page, la saisie du code postal va automatiquement remplir le select de la ville et ce dès que le code postal saisi a la taille de 5 caractères dont qu'il est complet. Celà fonctionne. Toutefois je constate quelquechose de pas très claire, si après avoir saisi les 5 caractères du code postal je clique de suite sur le select çà ne marche pas il n'y a rien dedans il faut attendre il semble pour qu'il se remplisse. Auriez vous un moyen pour contourner ce souci ? L'évènement que j'utilise pourtant est .on('change' donc normalement dès la saisie des 5 caractères du code postal il devrait déjà commencer à modifier le select.
    MAJ : Alors finalement il semble que ce soit l'évènement change le souci il ne se déclenche pas à chaque saisie d'un caractère dans l'input box il y a que lorsque je clique à côté de l'input que l'évènement se déclenche. Quelqu'un aurait une idée ???

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    je viens de faire un essai et au moment où je tape le 5e caractère, la requête AJAX est lancé et la réponse se fait en 0,1 secondes donc le temps que je clique sur le choix de la ville, le menu déroulant est déjà rempli donc je ne vois pas de problème

    ensuite si vous voulez que le chargement se fasse quand on tape un chiffre, essayez l'évènement "keyup" au lieu de "input"
    https://api.jquery.com/keyup/

    P.S. : je viens de relire votre code et avant de lancer l'appel AJAX, vous testez s'il y a 5 caractères donc c'est peut-être pour cela que cela ne fonctionne pas comme vous voulez.
    il faudrait que vous fassiez le minimum de débogage si vous voulez savoir ce qui ce passe et cela commence par afficher les différentes étapes de votre code ainsi que les contenus de variables concernées.

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    je rajouterais à ce qu(à écrit mathieu que la logique de la fonction n'est pas des meilleurs

    Je mets ton code ici
    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
    $(function () {
      $('#cp').on('input', function () {
        var val = $(this).val(); // on récupère la valeur cp
        var nb = val.length;
        if (nb == 5) {
          var objData = {
          };
          objData = {
            codePostal: val,
            maxRows: 10
          };
          if (val != '') {
            $('#ville').empty(); // on vide la liste des villes
            $.ajax({
              url: './getville.php',
              data: objData,
              dataType: 'json',
              type: 'POST',
              success: function (data) {
                var nbrep = data.length;
                if (nbrep > 0) {
                  $('#ville').append('<option value="" selected>Sélectionnez votre ville</option>');
                  $.map(data, function (item)
                  {
                    $('#ville').append('<option value="' + item.Id + '">' + item.Ville + '</option>');
                  });
                }
              }
            });
          }
        }
      });
    });
    la liste devrait être nettoyer si la longueur est inférieure à 5, risque d'envoi erroné et certains test ne sont pas « utiles »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      $('#cp').on('input', function () {
        var nb = val.length;
        if (nb == 5) {
          ...
          if (val != '') {
            $('#ville').empty(); // on vide la liste des villes
          }
        }
      });

Discussions similaires

  1. Chargement de données texte.
    Par Guiadeur dans le forum Oracle
    Réponses: 1
    Dernier message: 19/10/2005, 11h42
  2. souci sur ajout de données de zone de liste
    Par Tierisa dans le forum IHM
    Réponses: 6
    Dernier message: 27/09/2005, 08h30
  3. texture dynamique et chargement de données
    Par Mastero dans le forum DirectX
    Réponses: 6
    Dernier message: 03/05/2005, 14h37

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