ユーザーごとに段落を追加および削除するオプションを備えた小さな CMS の作成に問題があります。すべてのブラウザで、BACKSPACE ボタンの動作が少し異なります。私が達成したいのは、ユーザーが ENTER を押して段落 (P) を追加し、BACKSPACE でテキストを削除して P を削除できることです。これに対する良い答えが見つかりません。
このスクリプトを作成しました:
$(document).keydown(function(e){
if ( e.keyCode == 8 && e.target.tagName != 'DIV' ) {
e.preventDefault();
}
});
contenteditable DIV がフォーカスされていない場合に BACKSPACE を押して、新しく追加された段落を削除しないようにします。また、ナビゲーションの前のページの問題を回避するために。
<div class="wrap" contenteditable="true">
<p class="paragraph" id="parg1">
I want BACKSPACE not to delete first P tag - BACKSPACE should delete its text but not P itself.</p>
<p class="paragraph" id="parg2">
second paragraph
</p></div>
FIREOXの下の jsfiddleのコードを確認してください
CHROME ではすべてが思いどおりに機能し、少なくとも Firefox でも同じように機能することを望みます。
OPERAは私が必要とするほとんどのことを行います.2番目の段落がBACKSPACEを押してマージされた場合、最初の段落の最初の文字の前に2つのスペースが追加されます. しかし、これらのブラウザーの優れている点は、最初の段落がまったく削除されないことです。
IE は、段落がマージされるときに OPERA よりも多くのスペースを追加しますが、後で最初の段落を削除することができます - 残念ながら。
しかし、私が本当に必要としているのは、動作する Firefox であり、それはいくつかのクレイジーなことを行います。BACKSPACE で最初の P タグを削除しないでほしい。そうしないと、テキスト カーソルが .paragraph から .wrap に「落ちます」。私は常に最初に P を持ちたいと思っています - BACKSPACE はそのテキストを削除する必要がありますが、P 自体は削除しないでください。
また、2 番目の段落の最初の文字の前にカーソルを置いて BACKSPACE を押すと、P タグが削除され、カーソルが .wrap に「落ちます」。もう一度 BACKSPACE を押すと、カーソルは前の P にジャンプします。ただし、後で ENTER (新しい P を作成) を押してからもう一度バックスペースを押すと、突然すべてが想定どおりに機能します - カーソルは .wrap に落ちることなく前の P にジャンプします。なぜ?Chromeのように、最初からそのように機能させたいと思っています。
それはある種のFIREFOXバグですか?jqueryで直せますか?