Ho un div contenteditableSostituire parola specifica in contenteditable
<div id="divTest" contenteditable="true">
ho bisogno di ottenere l'ultima parola dalla posizione del cursore e su certa condizione devo testare e rimuovere solo questa parola specifica. Qui di seguito è come sto facendo
$('#divTest').on('keyup focus', function (e) {
if (e.keyCode == 32) {
var lastWord = getWordPrecedingCaret(this), spanLastWord = $('#lastWord');
}
});
function getWordPrecedingCaret(containerEl) {
var preceding = "",
sel,
range,
precedingRange;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0).cloneRange();
range.collapse(true);
range.setStart(containerEl, 0);
preceding = range.toString();
}
} else if ((sel = document.selection) && sel.type != "Control") {
range = sel.createRange();
precedingRange = range.duplicate();
precedingRange.moveToElementText(containerEl);
precedingRange.setEndPoint("EndToStart", range);
preceding = precedingRange.text;
}
var words = range.toString().trim().split(' '),
lastWord = words[words.length - 1];
if (lastWord) {
var resultValue = 'some'; // this value is coming from some other function
if (resultValue == lastWord) {
alert('do nothing');
// do nothing
}
else
{
alert('replace word');
// delete That specific word and replace if with resultValue
}
return lastWord;
}
}
Demo: http://codepen.io/anon/pen/ogzpXV
Ho cercato range.deleteContents(); ma quello cancellerà tutto il contenuto nel div. Come posso sostituire una parola specifica?
jsfiddle non sembra funzionare – Timmerz
Ho aggiunto alcuni css per evidenziare il div editabile (era trasparente). Dovrebbe funzionare almeno in FF e Chrome. Grazie per il vostro feedback –