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 :

Evenement et saisie automatique d'un champ Input


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 136
    Points : 69
    Points
    69
    Par défaut Evenement et saisie automatique d'un champ Input
    COUIN !

    Petite colle, en rapport avec un formulaire.

    Sur un champ input text, correspondant au nom, je le colorise en rouge si le champs est vide lors de la validation des données.

    Je souhaite le repasser en blanc lorsque le nom n'est plus vide.
    J'ai donc ajouté un événement de type onkeyup, qui appelle une fonction repassant le champs en blanc si sa valeur n'est pas vide.
    Impeccable, oui, mais en fait non.

    Si le visiteur a déjà saisi son nom précédemment, et que la saisie automatique est activée sur son navigateur, le fait de cliquer sur le champ propose ce qu'il a déjà mis.
    Si il clique sur cette saisie, le champ se rempli mais le visiteur n'ayant pas agit sur le clavier, le onkeyup n'est donc pas utilisé.

    J'ai tenté un onmouseover, mais cela ne marche pas (car le pointeur est généralement en dessous du champ, lorsqu'on sélectionne une entrée déjà saisie.
    onmouseout, idem, le pointeur n'est sur le champ à ce moment.

    Bon certes c'est un peu du détail mais si il y a une solution simple ce serait bien.

    Le cas contraire, j'adopterais un autre scénario :
    - Blanchir le champs lorsqu'on clique dessus et observer sa value quand on le quitte : Si vide, il repasse en rouge.

    Merki
    Couin

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Code HTML : 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
    <!DOCTYPE html>
    <html lang="fr"> <!-- Radio74.html version 5 -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>Ici mon titre</title>
    		<style>
                            /* TAGs comentaire dans la partie style */
                    </style>
    		<script>
                            'use strict'; // force la déclaration des variables
                            function model() {
                                    let elem = document.getElementById("rechercherquoi");
                                    console.log("elem.value.length = " + elem.value.length);
                                    if(elem.value.length ==0){
                                            elem.style.backgroundColor = "red";
                                    }else{
                                            elem.style.backgroundColor = "white";
                                    }
                            }//----------------------fin de la function model -----------------------------------
                    </script>
    	</head>
    	<body>
    		<!-- la partie affichée sur la page -->
    		Bonjour le monde
    					<input type="text" id="rechercherquoi" onkeyup="model()">
    		<script>
                            //---------------------- du javascript complémentaire -----------------------------------
                    </script>
     
    	</body>
    </html>
    Sinon, mes ton code pour voir la différence.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    Les événements onblur et onfocus seraient-il la solution?
    https://developer.mozilla.org/fr/doc...andlers/onblur
    https://developer.mozilla.org/fr/doc...ndlers/onfocus

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    les événements change ou input : https://developer.mozilla.org/fr/docs/Web/Events/change

  5. #5
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 136
    Points : 69
    Points
    69
    Par défaut
    Hellooo

    Merci pour vos réponses

    Alors pour :
    inkeyup : ne fonctionne pas si on écrit pas manuellement dans le champ.
    onfocus : une fois qu'on a choisie une saisie automatique, le fond revient au blanc quand on revient sur le champ après l'avoir quitté.
    onblur : le fond revient au blanc qu'une fois qu'on quitte le champ.

    Pour change et input, j'ai adapté mais j'ai obtenu des résultats un peu bizarroïdes et hasardeux lol

    Cependant, en m'inspirant du script de ProgElecT, je suis arrivé au résultat à escompté, en utilisant setInterval, je lance la fonction "model" qui vérifie la valeur du champ toutes les 200 ms et le mets en blanc dès qu'il n'est pas vide.

    Donc bah du coup, même si pas obtenu de la manière que je voulais, le résultat escompté étant là, je passe en résolu

    A bientôt !
    Couin

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    pourquoi ne pas passer par l'écouteur oninput ?
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input oninput="this.style.backgroundColor = this.value ? 'transparent' : '#ECD';" style="background-color:#ECD" required>

  7. #7
    Membre du Club Avatar de Couin
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2014
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2014
    Messages : 136
    Points : 69
    Points
    69
    Par défaut
    Hello,

    OnInput avec Required détecte effectivement si il y a une entrée dans le champ, mais le cadre s'affichant lorsque le champs est vide se fait de manière ombrée autour du champs et non nette sur le bord intérieur comme je le souhaite.
    J'ai testé quelques codes css pour modifier les propriétés de style de "required" mais sans succès.

    Merki

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    OnInput avec Required détecte effectivement si il y a une entrée dans le champ,
    1000 pardons, le required n'a rien avoir ici, je n'aurais pas du le mettre pour ne pas embrouiller

    On a donc simplement :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input oninput="this.style.backgroundColor = this.value ? 'transparent' : '#ECD';" style="background-color:#ECD">

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

Discussions similaires

  1. Saisie automatique de deux champs
    Par Isabelled dans le forum IHM
    Réponses: 3
    Dernier message: 29/05/2013, 15h52
  2. [AC-2002] Saisie automatique dans un champ texte
    Par Jean-Luc80 dans le forum IHM
    Réponses: 2
    Dernier message: 19/07/2009, 06h39
  3. Empêcher la saisie automatique dans un champ
    Par zooffy dans le forum ASP.NET
    Réponses: 6
    Dernier message: 14/01/2008, 12h51
  4. Réponses: 14
    Dernier message: 27/11/2006, 13h07
  5. saisie automatique pour un champs
    Par god0126 dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2006, 10h57

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