【发布时间】:2013-09-21 02:27:07
【问题描述】:
我有这个
<div id="remove"></div>
<div CONTENTEDITABLE="true"></div>
如果用户突出显示 contenteditable div 中的文本并单击删除 div,我想删除该文本。
【问题讨论】:
标签: jquery
我有这个
<div id="remove"></div>
<div CONTENTEDITABLE="true"></div>
如果用户突出显示 contenteditable div 中的文本并单击删除 div,我想删除该文本。
【问题讨论】:
标签: jquery
如果一个字符从左到右突出显示,则接受的答案不起作用。
我用它来删除文本:
$("#remove").on('click', function (){
if (window.getSelection().toString() != "") {
selectedText = window.getSelection().toString()
var text1 = $(".selected").text().split("")
pointStart = window.getSelection().anchorOffset
pointEnd = window.getSelection().focusOffset
if (pointEnd < pointStart) {
pointStart = pointEnd
}
text1.splice(pointStart, selectedText.length);
text1 = text1.join("")
} else {
selectedText = $(".selected").text()
var text1 = ""
}
$(".selected").text(text1)
});
【讨论】:
使用移除按钮而不是移除 div:
function removeSelectedText () {
if (window.getSelection || document.getSelection) {
var oSelection = (window.getSelection ? window : document).getSelection();
$('#text').text(
$('#text').text().substr(0, oSelection.anchorOffset)
+ $('#text').text().substr(oSelection.focusOffset)
);
} else {
document.selection.clear();
}
}
$('#remove').click(function() {
removeSelectedText();
});
另见this example。
【讨论】:
在 HTML 中添加一些内容:
<div id="remove"><a href="#">Remove</a></div>
<div CONTENTEDITABLE="true">Hello World! This is a test text.</div>
代码如下:
var getSelected = function(){
var t = '';
if(window.getSelection){
t = window.getSelection();
}else if(document.getSelection){
t = document.getSelection();
}else if(document.selection){
t = document.selection.createRange().text;
}
return t;
};
$('div#remove').click(function(){
var selection = getSelected();
var text = $('div[CONTENTEDITABLE=true]').text();
text = text.replace(selection, '');
$('div[CONTENTEDITABLE=true]').text(text);
});
【讨论】:
将div#remove 设为button#remove
function getSelectedText() {
return window.getSelection ? window.getSelection() // ie9 or above
: document.selection.createRange().text; // earliar ie9
}
$('#remove').click(function() {
var curText = $('#editable').text(),
selObj = getSelectedText(),
selText = selObj.toString();
var newTxt = '';
for (var i = 0; i < curText.length; i++) {
if (i < selObj.anchorOffset || i >= (selObj.anchorOffset + selText.length)) {
newTxt += curText[i];
}
}
$('#editable').text(newTxt);
});
【讨论】: