バックスペース/削除キーがヒットしたときに、強調表示されたテキストを<span>
で囲むために、次の関数を使用しています。テキストが選択されている場合にスパンで折り返す
$(document).keydown(function(event) {
var selection = document.getSelection();
typoNumber++;
if (event.keyCode == 8 || event.keyCode == 46) {
event.preventDefault();
var span = document.createElement("span");
span.setAttribute('id', 'typo' + typoNumber);
span.className = "deleted typo";
span.setAttribute('contenteditable', 'false');
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(span);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
});
.deleted.typo {
background: rgba(100,100,100,0.25);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Here is text to experiment with.</div>
選択したテキストは、(私は空<span>
要素の束を取得しないように)がある場合、私は唯一の機能を実行したいです。最初のif
の文を次のように変更してみました:
if (selection !== '' && event.keyCode == 8 || event.keyCode == 46) {
しかし、それはうまくいかなかった。何か案は?
:このような何か。ありがとう、@ rorymorris89! –