('body').on('input', '.textarea', function() {
var msg = $(this).html();
var selection = window.getSelection();
var range = selection.getRangeAt(0);
//Ищи Img и меняю если это смайл
var a = msg.replace(/<img[^>]+>/g, function(i) {
var tag = i.match(/src="([^"]+)"/)[1];
if (tag == 'http://domen.ru/smiles/1.png') return ':)' ;
if (tag == 'http://domen.ru/smiles/2.png') return ':(' ;
......
else return '' ;
});
//Потом удаляю все теги
var b = a.replace(/<[^>]*?>/g , '');
//Обратно меняю символы на img через функцию
var d = vozvratIMG(b);
// И вывожу
$(this).html(d);
//Удаляю все range
selection.removeAllRanges();
//выставляю новый
selection.addRange(range);
});
Каретка возвращается но только до того момента как я поставлю смайл. После этого при каждом нажатие каретку сбрасывает в начало. А если удалить selection.removeAllRanges(); то каретка будет возвращатсяс к предыдущему смайлу. Как я понимаю он не может запомнить range. Как мне быть ? подскажите .