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

jQuery Discussion :

détecter saisie immédiate


Sujet :

jQuery

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut détecter saisie immédiate
    Je me penchais sur la problématique de la détection de sasie immédiate dans un input
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#foo").bind("propertychange",function(){	alert('saisie') })
    fonctionne sous IE mais pas FFX


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#foo").on("propertychange",function(){	alert('saisie') })
    fonctionne sous IE mais pas FFX

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#foo").bind("input",function(){	alert('saisie') })
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#foo").on("input",function(){	alert('saisie') })
    sont supposés fonctionner sous jquery 1.7+ mais je n'ai pas eu beaucoup de succès avec

    keypress et keyup sont limitatif quand aux trigger ...
    change implique un changement du contenu LORS de la perte de focus

    Quel est selon vous le meilleur moyen ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    oninput fonctionne correctement (enfin, pour IE à partir de 9) :
    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
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8" />
    	<title>oninput</title>
    	<script src="http://code.jquery.com/jquery-latest.js"></script>
    	<script>
                    jQuery(function($){
                            $('#foo').on('input', function(){
                                    console.log('Nouvelle valeur : ', this.value);
                            });
                    });
            </script>
    </head>
    <body>
    	<input id="foo" />
    </body>
    </html>

    Seul défaut pour IE, l'événement n'est pas déclenché lorsque tu supprimes des caractères et je ne crois pas qu'il y ai de solution pour ça...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    autant faire un bind multievents ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#foo").bind("keyup mouseup ....  ",function(){	alert('saisie') })
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre régulier Avatar de marcbuils
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2012
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    Bonjour SpaceFrog,

    Personnellement je ferais du multievents en mappant les events paste et cut.
    Le problème de ces events c'est qu'ils sont appelé avant de modifier le texte de l'input, il faut donc un délai avant de lire le texte.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <input type="text" id="foo" />
    <div id="result"></div>
     
    <script>
        $('#foo').on('input keyup paste cut', function(){
            $(this).delay(10).queue(function(){
               $('#result').text( $(this).val() );
               $(this).dequeue();
            });
        });
    </script>
    Démo:
    http://jsfiddle.net/marcbuils/rzM8k/2/

    Pour ce genre de chose je te conseillerais même un de mes plugins: jQuery.waiting (http://marcbuils.github.com/jquery.waiting/) qui te permet d'être certain de ne pas remplir la queue lorsque l'utilisateur laisse une touche appuyé puisqu'il ne conserve que le dernier élément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <input type="text" id="foo" />
    <div id="result"></div>
     
    <script>
        $('#foo').on('input keyup paste cut', function(){
            $(this).waiting(10).done(function(){
               $('#result').text( $(this).val() );
            });
        });
    </script>
    Démo:
    http://jsfiddle.net/marcbuils/XVLrq/
    Pour moi, une informatique efficace est avant tout une informatique intuitive
    Liste de mes cours: http://marcbuils.developpez.com
    Si vous appréciez mon intervention, dite le avec le

Discussions similaires

  1. Expression regulières(détecter une fin de saisie)
    Par Hanakimi dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 25/04/2010, 17h14
  2. [TextField] Détecter la saisie de texte
    Par verbose dans le forum Wicket
    Réponses: 2
    Dernier message: 04/02/2010, 10h51
  3. Comment détecter la saisie
    Par jlb59 dans le forum Langage
    Réponses: 27
    Dernier message: 10/04/2008, 15h57
  4. Réponses: 15
    Dernier message: 29/09/2006, 11h52
  5. Saisie immédiate d'un formulaire à un autre
    Par ivan7 dans le forum IHM
    Réponses: 4
    Dernier message: 08/02/2006, 13h18

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