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

JavaScript Discussion :

[AJAX] onChange pas assez fonctionnel


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut [AJAX] onChange pas assez fonctionnel
    Bonjour,

    bon, mon problème est une suite de l'ancien problème que j'avais eu (topic dessous dans la liste).
    En fait, j'ai un champ input de type text qui contiendra un mail. Quand je tape quelque chose dans ce champ, s'affiche dessous une liste de propositions correspondantes à ce que j'ai tapé (autocomplétion).

    Sur le onChange de ce champ, j'appelle une fonction qui m'affichera les détails correspondants à ce mail.
    Le problème est que la fonction se lance dès que je sélectionne un choix dans la liste (normal jusque là), mais elle ne prend pas en compte le choix que j'ai fait : juste ce que j'ai tapé auparavant.

    Un petit exemple :
    Champ input : info@
    Liste qui s'affiche dessous : info@truc.fr, info@machin.fr, info@bidule.fr ...
    Je clique sur info@truc.fr
    Et là je devrais avoir les infos correspondantes à info@truc.fr

    Or ma fonction cherche les infos correspondantes uniquement à info@ .

    J'ai testé en mettant onSelect, onBlur, onKeyUp, onKeyPress. Mais ça ne fonctionne pas.

    Voici le champ avec appel à la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id='liste'>
            <input type='text' class=d name='reclogm' id='reclogm' value='$reclogm' style='width:250px;' onChange="ajaxinfo();">
    </div>
    Et ma fonction ajaxinfo() :
    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
     
    function ajaxinfo() 
    	{	  
    	  var ajaxin = document.getElementById("reclogm").value;
    	  http.open("GET", url + escape(ajaxin), true);
    	  http.onreadystatechange = handleHttpResponse;
    	  http.send(null);
    	}
     
     
    	function handleHttpResponse()
    	{
      		if (http.readyState == 4) 
      		{
    		    document.getElementById('info').style.display="block";
    		    var response = http.responseText;
    		    document.getElementById('info').innerHTML = response; 
        	}
    	}
    Dans le div 'info' il n'y a rien, juste que j'affiche ma requête à l'intérieur.

    Et ma requête :
    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
     
    $ref = $_REQUEST['recherche'];
    $explo = explode("@",$ref);
    $arg = $explo[1];
    $tabinfo[] = array(labels => ",Login,Destination");
    $SQLinfo = "SELECT source,destination FROM emails WHERE source LIKE '%$ref%'";
    $Q = dbiDoBD($SQLinfo);
    $i=1;
    while ($R = dbiFetch($Q))
    {
    	$tabinfo[$i] = array(descD => $i,
    				valC1 => $R['source'],
    				val2  => $R['destination']
    				);
    	$i++; 
    }
    Serait-ce le explode qui pose problème ? Si je l'enlève, apparement j'obtiens les bons résultats (mais je suis obligée de faire la requête que sur la seconde partie de l'email, ce qu'il y a après l'@).

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par baggie Voir le message
    Serait-ce le explode qui pose problème ?
    j'aurais tendance à dire oui ...
    Ne suffit-il pas de protéger le caractère "@" dans la requête SQL ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Protéger, c'est-à-dire ? Ne pas le mettre dans le '%@$arg%' ? (si c'est ça, ça n'a rien changé).

    Je suppose que pour ne faire la recherche que sur la partie après le @ du mail, il n'y a que l'explode de possible ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    Protéger, c'est-à-dire ?
    En SQL, normallement c'est en doublant le caractère (\ en JS).
    Pour insérer une simple quote dans une chaine (la simple quote étant le délimiteur de chaine) : 'Protection d''une simple quote'

    => essaye de doubler le @ :@@

    Mais si ça fonctionne déjà comme ça ....

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ca ne fonctionne pas :/

    Si une fois que j'ai sélectionné un mail, que les infos se sont affichées (donc infos non convenables), mais que là je retouche au mail en supprimant par exemple le 'fr' à la fin, alors là il m'affichera les infos que je veux. Mais bon, ça n'est pas comme ça qu'il faudrait que ça fonctionne :s

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Ta liste est-elle déroulante ou pas (pas = toutes les lignes affichées sans déroulement) ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Non elle ne l'est pas, j'ai 10 propositions affichées et puis c'est tout, pas de scroll sur le côté ^^

    [EDIT] Avec un onClick ça fonctionnerait mais il faut que je dise à ma fonction Ajax de ne pas effectuer de recherche tant que le champ est vide. En javascript on le dit comment ça ? :/ [/EDIT]

    [EDIT 2] En fait non, je devrais obligatoirement cliquer dans le input quand même après sélection du mail >< [/EDIT 2]

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    [EDIT 2] En fait non, je devrais obligatoirement cliquer dans le input quand même après sélection du mail >< [/EDIT 2]
    C'est là que je voulais en venir : essaye d'utiliser ondblclick plutôt que onchange ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Le problème est que même si cette fois j'obtiens les bonnes infos, après avoir sélectionné mon mail dans ma liste, je suis obligée de dblcliquer dans mon input pour obtenir les infos :/ ça ne veut pas se faire dès que j'ai sélectionné mon mail et qu'il s'affiche dans le input.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    Le problème est que même si cette fois j'obtiens les bonnes infos, après avoir sélectionné mon mail dans ma liste, je suis obligée de dblcliquer dans mon input pour obtenir les infos :/ ça ne veut pas se faire dès que j'ai sélectionné mon mail et qu'il s'affiche dans le input.


    J'avais pas vu ça : le onchange/ondblclick, c'est sur le select, pas sur l'input.

    Sinon, ce que tu décris devient tout à fait logique

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Hummm, et comment puis-je donc faire ? Parce que l'on ne peut rien saisir dans un select donc impossible de saisir un mail et que l'autocomplétion s'effectue.
    Ou alors je me trompe sur les select ^^

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    tu remplis l'input
    => la liste est alimentée avec les propositions correspondantes
    => tu doubles-cliques sur la bonne
    => sur ce double-clic :
    1) tu mets à jour l'input (ce n'est que pour l'affichage)
    2) tu déclenches l'appel Ajax (sur la base de la value du select et non de l'input)

    => ton input text n'a pas d'autre évènement à gérer que la mis à jour de la liste
    => ta liste mets à jour l'input avec la valeur choisie, et le div avec les infos correspondantes récupérées dans la bdd

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  13. #13
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Euh un truc que je n'ai pas très bien capté, mettre à jour l'input c'est-à-dire ?

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    mais que là je retouche au mail en supprimant par exemple le 'fr' à la fin, alors là il m'affichera les infos que je veux.
    C'est donc bien que tu récupères l'@ finale dans l'input text après choix dans la liste ?

    Et c'est bien la value de l'input qui est actuellement prise pour aller chercher les infos dans la bdd, non ?

    En tous cas, c'est ce que dis ton code ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  15. #15
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    C'est donc bien que tu récupères l'@ finale dans l'input text après choix dans la liste ?

    Et c'est bien la value de l'input qui est actuellement prise pour aller chercher les infos dans la bdd, non ?
    Oui mais il prend juste ce que j'ai tapé comme value pas le mail sélectionné dans ma liste.

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    Oui mais il prend juste ce que j'ai tapé comme value pas le mail sélectionné dans ma liste.
    J'ai bien compris, et c'est pour ça que je te conseille d'utiliser la value du select et non celle de l'input.

    Faut modifier ton code, quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ajaxin = document.getElementById("id_du_select").value;
    EDIT :
    Citation Envoyé par E.Bzz Voir le message
    tu remplis l'input
    => la liste est alimentée avec les propositions correspondantes
    => tu doubles-cliques sur la bonne ligne dans la liste
    => sur ce double-clic :
    1) tu mets à jour l'input (ce n'est que pour l'affichage)
    2) tu déclenches l'appel Ajax (sur la base de la value du select et non de l'input)

    => ton input text n'a pas d'autre évènement à gérer que la mis à jour de la liste
    => ta liste mets à jour l'input avec la valeur choisie, et le div avec les infos correspondantes récupérées dans la bdd
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  17. #17
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Donc je dois ajouter un select en plus de mon input ?
    Désolée mais j'essaye de bien comprendre x)

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    Donc je dois ajouter un select en plus de mon input ?
    Heu ... non

    Relis tout ça calmement depuis le début ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  19. #19
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Mais la value du select correspond à quoi si j'en n'ai pas dans mon code de select ?
    Ou alors je ne l'ai pas vu x)

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par baggie Voir le message
    Mais la value du select correspond à quoi si j'en n'ai pas dans mon code de select ?
    Ou alors je ne l'ai pas vu x)
    Et nous, on peut le voir le <select> ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. [AJAX] settimeout qui attend pas assez
    Par zooffy dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/01/2007, 10h52
  2. Groupbox pas assez dynamique
    Par gdpasmini dans le forum Windows
    Réponses: 6
    Dernier message: 31/03/2006, 22h33
  3. onChange pas déclanché sur une action javascript ?
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2005, 16h32

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