2

ユーザーごとに段落を追加および削除するオプションを備えた小さな 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で直せますか?

4

0 に答える 0