2017-11-08 4 views
0

私のページには、contenteditabledivという要素があります。特定のキーが押されると、関数が実行されます。contenteditable divの選択をキャンセルするには?

function bla(element) { 
    if (getSelectionHtml() != "") { 
    replaceSelectedText("text"); 
    } 
} 

getSelectionHtml()チェックを何かがユーザによって選択されている場合。 replaceSelectedText(text)は、選択したテキストを指定された文字列に置き換えます。両方の機能が正常に動作しています。
選択したテキストを置き換えた後、選択内容が '新しい'文字列と同じになるため、ユーザーの選択を 'キャンセル'したいので、テキストを削除するだけでは選択できません。

私はこの試みた:

element.style.userSelect = "none"; 
element.style.userSelect = "text; 

をしかしuserSelect: nonecontenteditableとdiv要素には何も変更していないようなので、それは動作しませんでした。また、このような単純な問題に対しては、この解決法はかなり醜いものに見えます。

どのようにしてユーザーの選択をキャンセルできますか?

+0

try element.selection.empty(); –

+0

@SanchitPatiyal私が試した:関数はエラー_Uncaught例外TypeError:プロパティを読み取ることができませんundefined_の「空」:( – Sacha

+0

どうdocument.selection.emptyについて(); –

答えて

1

あなたは選択を完全に削除したいと思います。あなたは、コンテンツの範囲を選択すると、選択したコンテンツの詳細のセットを返すwindow.getSelection()メソッドで範囲を得ることができ、したがって、基本的

window.getSelection().removeAllRanges() 

で文字列を交換した後、あなたはそうすることができます。範囲を変更して範囲を完全に削除する多くの機能があります。詳細を知るには、サポートされているすべてのメソッドを簡潔に読むことができます。Selection API

+0

ありがとう!うまくいった。私はそれがこの単純であるとは思わなかった! :) – Sacha

+0

あなたは@サチャを歓迎します –

関連する問題