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 :

Evénement et requête


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Points : 73
    Points
    73
    Par défaut Evénement et requête
    Salut!
    J'ai un petit soucis de requête. Je détecte une modification dans ma zone de texte comme cela:
    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
     
    function keyUp( e )
    {
    	var target; //initialisation
    	if( "activeElement" in document )
    		target = document.activeElement; //Si IE
    	else 
    		target = e ? e.explicitOriginalTarget : null;  // Si Firefox
     
    	if( target.id.substring( 0, 5 ) == 'visa_' )
    		checkVisa( target.id.substr( 5 ) ); 
    }
     
    window.onload = function( )
    {
    	if( document.addEventListener )
    	{
    		document.addEventListener( 'keyup', keyUp, false );
    	} 
    	else if( document.attachEvent ) 
    	{
    		document.attachEvent( 'onkeyup', keyUp )
    	}
    }
    Une fois l'événement intercepté, je balance 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
    17
    18
    19
    20
    21
    22
    23
     
    function checkVisa( index )
    {
    	var visa = document.getElementById( 'visa_' + index ).value.toUpperCase( );
    	document.getElementById( 'visa_' + index ).value = visa;
     
    	if( visa.length < 3 )
    	{
    		document.getElementById( 'sp_visa_' + index ).innerHTML = 'Lae visa doit contenir trois caractères.';
    		document.getElementById( 'sp_visa_' + index ).style.color = '#F00';
    		return ;
    	}
     
    	// requete AJAX
    	new Ajax.Request( 'resources/AJAX/check_visa.php?visa=' + visa + '&rdm=' + Math.random( ),
    	{
    		method: 'get',
    		onSuccess: function( transport ){
    		// ici, divers trucs
    	},
    	onFailure: function( ) { displayError( 'Erreur lors de la récupération des données.<br />&nbsp;' ); }
    	} );
    }
    Mon problème est que dans Firebug, je vois que la requête est exécutée deux fois... Où ai-je fait une erreur?

    Merci! :-)

    Raf

  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 raf_gug Voir le message
    Où ai-je fait une erreur?
    dans l'évènement, il me semble.

    Tu devrais utiliser onchange au lieu de onkeyup ...
    Ce dernier se déclenche à chaque touche (donc 2X pour saisir X dans un champ).
    onchange se déclenche une seule fois, à la sortie du champ seulement si la valeur a été modifiée

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2003
    Messages : 88
    Points : 73
    Points
    73
    Par défaut
    Salut et merci pour ta réponse! :-)
    Le problème c'est que j'aurais voulu que ca se fasse pendant que je suis dans le champ. Et onkeydown ne convient pas, il me faut le résultat après la touche...

    Tu as une autre idée? Sinon, je repenserai la chose et utiliserai on change...

    A plus!

    Raf

  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 raf_gug Voir le message
    Le problème c'est que j'aurais voulu que ca se fasse pendant que je suis dans le champ.
    Tout dépend de ce que tu entends par là ....

    Rien ne t'empêche de terminer, dans certains cas, ta fonction onchange par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('id_champ').focus();
    A+

Discussions similaires

  1. Evénement load, images et requêtes ajax
    Par eckerdecker dans le forum jQuery
    Réponses: 5
    Dernier message: 16/11/2011, 15h40
  2. Evènement JS => requête SQL puis action JS
    Par Alomon dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 12/09/2008, 11h48
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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