2010-10-27 6 views
10

Je ne sais pas pourquoi, mais si vous avez un élément avec contenteditable activé, la première fois que vous entrez un espace, il ajoutera un tag <br> dans l'élément. Si l'élément contient un espace par défaut (<p contenteditable="true">this is a test</p>), tout ira bien, mais dès que l'utilisateur clique sur cette barre d'espace (ou même copie + colle un caractère espace), Firefox ajoute un <br _moz_dirty="" /> au <p>.Contenteditable ajoute un <br> lorsque j'atteins l'espace

Quelqu'un a-t-il une idée ou une solution simple? C'est la première fois que je joue avec contenteditable, donc c'est nouveau pour moi. En ce moment, je suis en train d'utiliser $('br').remove() qui semble fonctionner, mais j'adorerais une explication et une bonne façon de l'éviter si quelqu'un le sait.

+0

Est-ce encore reproductible? Je n'ai jamais rencontré un tel bug dans FF – YakovL

+0

J'ai eu le même problème, http://jsbin.com/xarirotali/edit?html,css,output Appuyez deux espaces à la fin de 'du texte' et inspectez l'élément p en FF et il va ajouter un
. –

Répondre

0

J'utilise preventDefault lorsque l'utilisateur effectue un retour chariot. Peut-être que vous pourriez le modifier pour retourner un espace normal lorsque l'utilisateur utilise la clé espace.

 if(e.keyCode==13 && e.shiftKey){ //enter && shift 
      e.preventDefault(); //Prevent default browser behavior 
      //this.html(this.html+"<br>"); 
     } 
     if(e.keyCode==13){ //enter 
      e.preventDefault(); //Prevent default browser behavior 
     } 
+0

cela a fonctionné pour moi. – Veera

+0

J'ai essayé cette méthode mais Chrome me donne cette erreur: 'Uncaught ReferenceError: e n'est pas défini'. Est-ce que tu sais pourquoi? –

+0

Vous ne pouvez pas empêcher Firefox d'ajouter le
avec e.preventDefault() –