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 :

Saisie automatique et évènement


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut Saisie automatique et évènement
    hi all !

    Dans un formulaire je voudrais lors d'une saisie dans un champ texte activé automatiquement un bouton ou le désactivé.

    Voici les phases:

    - aucun text: bouton désactivé
    - Uniquement des espaces: bouton désactivé (ici j'utilise un expression régulière)
    - Au moins un caractère : bouton activé

    Alors au départ j'ai utilisé un onchange, mais ca ne s'activait qu'en cliquant en dehors du champs (pas très dynamique :s)

    J'ai donc pris un onKeyup où lors d'un relachement de texte, le bouton s'active. Donc là ca marche.

    Mon problème est que lorsque la saisie automatique d'un navigateur est présente, l'utilise ne tape rien, il clique dans le champ, et il choisi dans la liste de saisie auto ce qu'il veut, et du coup le bouton ne s'active pas.

    Alors j'ai testé divers évènement en plus du onKeyup.

    -onFocus : marche pas
    -onChange : marche mais faut cliquer extérieurement du champ pour que le bouton s'active.
    -onBlur : pareil
    - onClik: marche pas directement, il faut recliquer une fois dans le champ pour que le bouton s'active.

    Auriez-vous une solution ?

    Merci pour vos réponses !

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Ajouter un listener sur ton champs , sur l'évènement onchange + onkeyup

  3. #3
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Je vais chercher ce que tu as voulu dire par là, mais pourrais-tu être plus précis ?

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    solution plus simple

    implémente une méthode au load de ta page vérifiant toute les X secondes la valeur de ton champs ( via un setTimeout )

    sinon les listeners ressemble a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Fonction permettant d'initialiser les listeners
    function init_evenement(){
    	//On commence par affecter une fonction à chaque évènement de la souris
    	if(window.attachEvent){
    		document.onmousedown = start;
    		document.onmouseup = drop;
    	}
    	else{
    		document.addEventListener("mousedown",start, false);
    		document.addEventListener("mouseup",drop, false);
    	}
    }
    a chaque fois que l'utilisateur appuis ou relache sur la souris on effectue une action
    dans ton cas c'est lorsque l'utilisateur click ou qu'il appui sur une touche qu'il faut appeler ta méthode de vérification ça va aller ?

  5. #5
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    En résumé, dans mon cas, c'est lorsqu'un texte (hors espace) est présent dans le champs texte, alors là et uniquement là mon bouton s'active.

    Je capte ce que veux que je fasse avec le listener, un gestionnaire d'évènement

    Voici ce que j'ai pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function disableSaveButton(){
    	document.getElementById('savebasket').disabled = true;
     		var bName = new String(document.getElementById('basketName').value);
       		if(testRegExpBasketName(bName)){
       			document.getElementById('savebasket').disabled = false;
    	   	}
       	}
    <input type="text" name="basketName" maxlength="50" value="ALFA ROMEO" onkeyup="disableSaveButton();" onblur="disableSaveButton();" id="basketName">
     
    <input type="submit" name="method.save" value="Sauvegarder le panier" id="savebasket"
    >

  6. #6
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    - up -

  7. #7
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Personne n'a une idée ?

    Il s'agit simplement d'activer un bouton lorsqu'une personne rentre un texte dans un champ texte, que ce soit pas l'action d'un bouton du clavier (onKeyup) ou encore par l'utilisation de la saisie automatique du navigateur.

    Exemple:

    - L'utilisateur tape son nom, le bouton valider s'active
    - L'utilisateur tape que des espaces, le bouton valider reste inactif
    - L'utilisateur choisit un terme dans une liste de saisie automatique, le bouton s'active car un caractère est présent dans le champ texte.

    En espérant que cette nouvelle explication porte ses fruits !

    Merci pour vos réponses !

Discussions similaires

  1. saisie automatique pour un champs
    Par god0126 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2006, 10h57
  2. Saisie automatique et JTextField
    Par doyouknow56 dans le forum Composants
    Réponses: 3
    Dernier message: 31/05/2006, 09h44
  3. Saisie automatique de dates dans formulaires
    Par yves89 dans le forum IHM
    Réponses: 11
    Dernier message: 17/05/2006, 00h04
  4. Activer un masque de saisie automatiquement
    Par mbzhackers dans le forum Access
    Réponses: 8
    Dernier message: 14/05/2006, 18h29
  5. Sous-formulaire créer une saisie automatique
    Par Mimi-des-îles dans le forum Access
    Réponses: 2
    Dernier message: 23/02/2006, 14h47

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