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 :

Contrôle de la touche Entrée


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut Contrôle de la touche Entrée
    Bonjour,

    Oui je sais que ce sujet à déja été étudié auparavant.
    Mais mon cas est un petit peu plus compliqué, je n'ai pas réussi à le faire malgré ce que j'ai lu dans les autres sujets du forum.

    Alors voila, j'ai un texte, qui quand on clique dessus, se transforme en champ de saisie. On peut ainsi changer la valeur du texte, et dès qu'on clique ailleurs que dans le champs de saisie, ce dernier se retransforme en texte, avec sa nouvelle valeur.

    Voici le code, ce sera peut etre plus clair.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
      <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
        <script language="javascript">
     
          function trim(str)
          {
            return str.replace(/^\s+/,'').replace(/\s+$/,'');
          }
     
     
     
          function htmlEntities(html)
          {
            html = html.replace(/<[^>]*>/g,"");
            return trim(html);
          }
     
     
          function hasInput(id)
          {
            return (document.getElementById(id).getElementsByTagName('input')[0] != null);
          }
     
     
          function editMode(id)                                
          { 		
            if (!hasInput(id))
            {
              var value = htmlEntities(document.getElementById(id).innerHTML);
              document.getElementById(id).innerHTML = '<input type="text" id="input_'+id+'" value="'+value+ '" />';
              document.getElementById('input_'+id).focus();
              document.getElementById(id).onclick = null;
              document.getElementById('input_'+id).onblur = function onblur(event){ editMode(id); }
            }
            else
            {
              var texte = document.getElementById('input_'+id).value;
              document.getElementById(id).innerHTML = texte;
              document.getElementById(id).onclick = function onclick(event){ editMode(id); }
            }
          } 
     
        </script>
     
      </head>
      <body>
     
        <form method="POST" id="form">
          <p id="editable3" style="color:blue;font-weight:bold" onclick="editMode('editable3')">
            Cliquez sur le texte !!!
          </p>
        </form>
     </body>
    </html>
    Alors mon problème est le suivant :
    Lorsqu'on édite le texte, puis qu'on appuie sur entrée, le formulaire est envoyé. Seulement moi j'aimerais juste que le champs de saisie se ferme et se retransforme en texte, mais que le formulaire ne soit pas envoyé.
    Est-ce possible ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Oui, il te faut intercepter l'évenement onsubmit et empecher son traitement
    par défaut.

    Ou alors, supprimer la balise form et gérer la mise à jour avec AJAX

    Ou encore, laisser poster le formulaire en cliblant dans un iframe invisible (attribut
    target du form portant le nom de l'iframe)

    A toi de voir

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    Ca y est, j'ai trouvé la solution a mon problème.
    Il fallait que je redéfinnisse l'évenement onkeypress
    Voila le code :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
      <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
        <script language="javascript">
     
          function trim(str)
          {
            return str.replace(/^\s+/,'').replace(/\s+$/,'');
          }
     
     
     
          function deleteBaliseHTML(html)
          {
            html = html.replace(/<[^>]*>/g,"");
            return trim(html);
          }
     
          function htmlEntities(str)
          {
            str = str.replace(/&/g, "&amp;");
            str = str.replace(/"/g, "&quot;");
            str = str.replace(/</g, "&lt;");
            str = str.replace(/>/g, "&gt;");
            return str;
          }
     
     
          function hasInput(id)
          {
            return (document.getElementById(id).getElementsByTagName('input')[0] != null);
          }
     
     
          function editMode(id)                                
          { 		
            if (!hasInput(id))
            {
              var value = deleteBaliseHTML(document.getElementById(id).innerHTML);
              document.getElementById(id).innerHTML = '<input type="text" id="input_'+id+'" value="'+value+ '" />';
              document.getElementById('input_'+id).focus();
              document.getElementById(id).onclick = null;
              document.getElementById('input_'+id).onblur = function exitEdit(event){ editMode(id); }
              document.getElementById('input_'+id).onkeypress = function detectEnter(event)
              { 
                if(!event && window.event) event=window.event;
                if (event.keyCode == 13) editMode(id); 
              }
            }
            else
            {
              var texte = htmlEntities(document.getElementById('input_'+id).value);
              if (texte)
              {
                document.getElementById(id).innerHTML = texte;
                document.getElementById(id).onclick = function onclick(event){ editMode(id); }
              }
            }
          } 
     
        </script>
     
      </head>
      <body>
     
        <form method="POST" id="form">
          <p id="editable3" style="color:blue;font-weight:bold" onclick="editMode('editable3')">
            Cliquez sur le texte !!!
          </p>
        </form>
     </body>
    </html>

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

Discussions similaires

  1. Le contrôle TextBox et la touche Entrée
    Par Wnejla dans le forum SharePoint
    Réponses: 8
    Dernier message: 21/03/2013, 11h28
  2. Réponses: 4
    Dernier message: 11/11/2010, 10h20
  3. [PPT-2003] Effet de la touche entrée dans un contrôle zone de texte
    Par stroumfette44 dans le forum Powerpoint
    Réponses: 2
    Dernier message: 24/09/2009, 13h42
  4. Touche "Entrée" et contrôle "Login"
    Par calagan99 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/10/2007, 10h24
  5. touche entrée dans formulaire
    Par pram dans le forum XMLRAD
    Réponses: 8
    Dernier message: 15/04/2003, 09h13

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