2017-10-14 8 views
0

contentplayableの内側のhtmlを変更して、ユーザーが入力する特定のテキストの周囲にspanを囲んでいます。このユーザーは、改行、また、彼らはただで入力したスパンと同じIDとスタイリングでspanとして出くわす新しい行を作成するたび除いて、作業に最適です。contentEditableがキャリッジリターンにスパンを追加するのを止める方法

私はprevent contenteditable mode from creating <span> tagsを見たが、その中にいます彼らはすべてのスパンを削除しようとしています(少なくとも、誰もがアドバイスしているものです)。しかし、私が意図的に作成するスパンが必要です、私はそれらを倍増させたくありません。

私は現在Chrome 61を使用していますが、Chrome、FireFox、Edge、IE 11、またはSafariでこれらのブラウザをサポートする必要があるため、問題は発生しません。

+0

スパンでテキストを折り返すのにどのようなコードを使用していますか?あなたのコードに問題がありますか? –

+0

私はそれがそれであるとは思わない。私は内側のhtmlに単一のスパンを追加するだけです。私がhtmlを読むと、Enterを押して新しい行に重複する属性を持つ別のスパンを見る前に、単一スパンが表示されます。 –

答えて

0

私はそうのようなキーを入力ためにonKeyDownでスパンキラーを入れることができます:

document.addEventListener('keydown', function(event) { 
    if(event.keycode == 13) { 
     var span = window.getSelection().anchorNode.parentNode; 
     if(span.id === "spanThatShouldntAppearAfterPressingEnter"){ 
      unwrap(span); 
     } 
    } 
}, true); 
function unwrap(el){ 
    var parent = el.parentNode; // get the element's parent node 
    while (el.firstChild){ 
     parent.insertBefore(el.firstChild, el); // move all children out of the element 
    } 
    parent.removeChild(el); // remove the empty element 
} 

私は本当にそれを行うにはしたくない、誰もがよりエレガントな何かを考えることができますか?

関連する問題