Prévenir line/sauts de paragraphe dans contentEditable
Lors de l'utilisation de contentEditable dans Firefox, il est un moyen pour empêcher l'utilisateur d'insérer le paragraphe ou des sauts de ligne en appuyant sur entrée ou maj+entrée?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez associer un gestionnaire d'événement pour la keydown ou événement keypress pour la contentEditable champ et d'annuler la manifestation si le mot de code identifie lui-même comme entrée (ou maj+entrée).
Cela va désactiver enter/maj+entrée complètement lorsque le focus se trouve dans le contentEditable champ.
Si vous utilisez jQuery, quelque chose comme:
...qui retournera false et annuler l'événement keypress sur entrée.
C'est possible avec de la Vanille JS, avec le même effort:
Vous ne devez pas utiliser jQuery pour les choses les plus simples. Aussi, vous pouvez utiliser de la "clé" au lieu de "qui": https://developer.mozilla.org/en-US/docs/Web/Events/keypress
Mise à jour, depuis
keypress
est obsolète:Ajouter la règle CSS suivante à cacher les sauts de ligne. Ce n'est qu'un paramètre de style, vous devez ajouter un peu de gestionnaires d'événements pour empêcher l'insertion de sauts de ligne:
<DIV>
s trop, donc peut ajouter.your_editable * { display: inline }
avant que.Si vous êtes à l'aide du framework JQuery, vous pouvez le définir à la sur méthode qui vous permettra d'avoir le comportement souhaité sur tous les éléments, même si celui-ci est ajouté récemment.
une autre option est de permettre des pauses pour être entrés, mais de les supprimer sur le flou. cela a l'avantage de traiter avec le contenu collé. vos utilisateurs seront soit on aime ou on déteste (en fonction de vos utilisateurs).
puis, en html:
Autres que d'ajouter des sauts de ligne, le navigateur ajoute les balises et les styles (lorsque vous collez du texte, le navigateur ajoute également votre texte collé style).
Le code ci-dessous couvre tout.
Lorsque vous collez du texte, tous les éléments ajoutés par le navigateur sont supprimés à partir du texte.
Cliquez ici pour un exemple vivant
Solution proposée par Kamens ne fonctionne pas à l'Opéra, vous devriez joindre à l'événement pour en lieu et place.
Si vous souhaitez cibler tous les contentEditable champs de l'utilisation
Je suis venu ici à la recherche pour la même réponse, et a été surpris de trouver que c'est une solution assez simple, à l'aide de l'éprouvé et vrai
Événement.preventDefault()
JS:
HTML:
Utiliser les CSS:
Pour moi sa a fonctionné!