Показать сообщение отдельно
  #42 (permalink)  
Старый 11.01.2018, 03:25
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

('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. Как мне быть ? подскажите .
Ответить с цитированием