Proteger des apostrophes

Proteger des apostrophes - HTML/CSS - Programmation

Marsh Posté le 18-03-2009 à 08:36:44    

Bonjour,
Je n'arrive pas à protéger les apostrophes dans mon code.
J'ai fait un bout de programme dont le but est de transformer du texte dans un div en un champ input quand on double clic dessus et de l'enregistrer quand on sort du champ (à terme, avec un peu d'ajax, ça s'enregistrera automatiquement et ça permettra de modifier très facilement un formulaire).
Quand je double clic, que je rajoute des doubles apostrophes, que je clique ailleurs et que je redouble clic dessus, ce qui suit la double apostrophe disparait.
 

Code :
  1. <html>
  2. <STYLE type="text/css">
  3. .display{
  4.   background-color: White;
  5.   color: Black;
  6. }
  7. .display input{
  8.   background-color: White;
  9.   border: 0px;
  10.   color: #000088;
  11. }
  12. </STYLE>
  13. <script language="JavaScript">
  14. function addslashes(ch) {
  15.  ch = ch.replace(/\\"/g,'\\\\"');
  16.  return ch
  17. }
  18. function edit(id)
  19. {
  20.  var div = document.getElementById(id);
  21.  if (div.firstChild.nodeType==3) {
  22.   div.innerHTML= '<input name="input" type="text" value="'+addslashes(div.firstChild.data)+'" onblur="save(this.parentNode.id);">';
  23.  }
  24.  div.ondblclick='';
  25.  }
  26. function save(id)
  27. {
  28.  var div = document.getElementById(id);
  29.  var valeur = div.firstChild.value;
  30.  // ici on sauvegarde la valeur avant
  31.  div.innerHTML= valeur;
  32.  div.ondblclick=function () {edit(this.id);};
  33.  }
  34. </script>
  35. <body>
  36. <div class='display' id='coucou' ondblclick='edit(this.id);'>Choux</div><br>
  37. <div class='display' id='hiboux' ondblclick='edit(this.id);'>Hiboux</div><br>
  38. <div class='display' id='cailloux' ondblclick='edit(this.id);'>Cailloux</div><br>
  39. </body>
  40. </html>


 
Question bonus : pourquoi ça se retransforme bien quand je clique ailleurs, mais pas quand je double clique sur un autre champ ? Y'a t'il un autre événement que onBlur pour dire qu'on est parti du champ du formulaire en question ?
 
Merci beaucoup pour votre aide,
 
Axel

Reply

Marsh Posté le 18-03-2009 à 08:36:44   

Reply

Marsh Posté le 18-03-2009 à 09:59:37    

Code :
  1. function addslashes(ch) {
  2. ch = ch.replace(/"/g,'&quot;');
  3. return ch
  4. }


Message édité par kao98 le 18-03-2009 à 10:00:16

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 18-03-2009 à 11:47:50    

Super, ça marche nickel !
 
Merci beaucoup.
 
Et pour l'autre question : comment faire en sorte que la fonction save() soit appellé même si je sors du premier champ en double cliquant sur le deuxième ?
 
Merci,
 
Axel

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed