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 :

Désactiver la touche Backspace ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut Désactiver la touche Backspace ?
    Bonjour,

    Je voudrais savoir comment faire pour désactiver la touche
    Backspace mais seulement lorsque celle-ci reste enfoncée.
    J'ai trouvé ce tuto:

    http://unixpapa.com/js/key.html

    où il est expliqué que lorsqu'une touche reste enfoncée ça génère
    un auto-repeat.
    Malheureusement je n'arrive pas à trouver comment faire pour détecter
    cet auto-repeat, d'autant plus que ça varie selon les browser (je suis sous Firefox/Linux).

    Quelqu'un pourrait m'aider ?

    Merci.

  2. #2
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    En somme, tu as un champ texte, et tu veux qu'il soit possible d'effacer au maximum 1 caractère par seconde par exemple ?


    ... parfois j'en viens vraiment à me demander quel genre d'interfaces de tordus vous faite subir à vos visiteurs ( Mais bon, je présume que tu dois être dans un cas très particulier, du genre un jeu en online utilisant des combinaisons de touches )

    L'idée c'est de faire un évènement onmousedown, qui va comparer le temps actuel à celui de la dernière touche appuyée qui se trouve dans une variable.

    Si le temps est inférieur à X ms, faire l'action, sinon, return false;


    Tu peux aussi coupler le tout avec onmouseup, afin que onmouseup ré-initialise une variable qui s'occupe de gérer si la touche à déjà été pressée ou pas.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    intercepte le keycode 8 sur le keypress
    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 éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    En somme, tu as un champ texte, et tu veux qu'il soit possible d'effacer au maximum 1 caractère par seconde par exemple ?
    Oui en gros c'est ça.
    intercepte le keycode 8 sur le keypress
    C'est déjà fait mais lorsque je reste appuyé sur la touche trop longtemps, le backspace fonctionne. Ou alors je neutralise complètement le backspace mais
    c'est pas top.
    En fait ce qui complique encore les choses c'est que je developpe ça en tant que plugin pour CKeditor (editeur wysiwyg) et je dois utiliser l'API qui va avec.
    L'idée du onmousedown est intéressante mais ça risque d'être coton à implémenter.
    N'y a t-il pas un autre moyen ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par tintin72 Voir le message
    >En somme, tu as un champ texte, et tu veux qu'il soit possible d'effacer au maximum 1 caractère par seconde par exemple ?

    Oui en gros c'est ça.
    Ouais ben il faut pas. L'utilisateur devrait effacer ses caractères à la vitesse où il a l'habitude de le faire. En fait, sur cette question-là il ne faut rien faire du tout, c'est très bien tel que.

    Citation Envoyé par tintin72 Voir le message
    L'idée du onmousedown est intéressante mais ça risque d'être coton à implémenter.
    N'y a t-il pas un autre moyen ?
    onkeydown, je pense. Il faudrait que je vérifie, mais je ne suis pas sûr qu'un timer soit nécessaire. Écouter onkeydown et onkeyup sur le backspace, et ne laisser passer qu'un seul onkeypress entre les deux, devrait suffire.
    C'est un peu compliqué à gérer, mais JavaScript est suffisamment puissant pour ça.
    Je suis une tanche en JavaScript donc je ne sais pas s'il y a plus simple, mais j'en doute : JavaScript est un langage utilisé pour manipuler des pages web, pas pour faire des GUIs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Écouter onkeydown et onkeyup sur le backspace, et ne laisser passer qu'un seul onkeypress entre les deux, devrait suffire.
    Oui c'est une bonne idée mais comment faire ça ?
    Sans compter que onkeypress réagit aussi à l'appuie d'une touche (comme
    onkeydown) donc bonjour le bazard (ils auraient pas pu faire un event onkeyhold ? ).

    Bref, pour l'instant j'en suis là:
    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
    function stop(ev)
    {
      ev.preventDefault();
    }
     
    function detectKey(event) { 
     
        switch(event.keyCode)
        {
          case 8:
     
    	setTimeout(function(){stop(event)}, 200);
          break;
        }
    } 
     
    var textarea = document.getElementById('text'); 
    textarea.addEventListener("keypress", detectKey, false);
    Je pensais que ev.preventDefault(); bloquerait le keypress mais non.
    Quelqu'un aurait une idée ?

Discussions similaires

  1. Cmt Désactiver une touche du KB ?!
    Par microzen dans le forum C++
    Réponses: 6
    Dernier message: 17/10/2005, 23h57
  2. [Débutant] [JTextArea] Désactiver une touche
    Par picomz dans le forum Composants
    Réponses: 2
    Dernier message: 09/06/2005, 16h52
  3. comment désactiver la touche windows ?
    Par mAdY dans le forum Bibliothèques tierces
    Réponses: 2
    Dernier message: 13/04/2005, 10h24
  4. Désactiver la touche Windows
    Par rolkA dans le forum Windows XP
    Réponses: 2
    Dernier message: 15/10/2004, 20h59
  5. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59

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