Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Функции срабатывают по несколько раз (https://javascript.ru/forum/jquery/71972-funkcii-srabatyvayut-po-neskolko-raz.html)

рони 07.01.2018 16:20

replace и replaceChild

Samsam 07.01.2018 20:04

а можно пример ? допустим как удалить теги <b>

Samsam 07.01.2018 20:07

А вообще как вы думаете заменять все теги кроме img с классом class=smile будет правильней либо запретить все теги кроме img с классом class=smile ?

рони 07.01.2018 21:29

Samsam,
можно заменять, как можно запретить для меня загадка.

Samsam 07.01.2018 21:30

если можно приведите пример

рони 07.01.2018 22:05

Samsam,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
$('body').on('input', '.editor', function() {
   this.innerHTML = this.innerHTML.replace(/<[^>]*?>/g , '')
})

});
  </script>
</head>

<body>
<div class="editor" contenteditable>test</div>

</body>
</html>

рони 07.01.2018 22:06

Samsam,
https://javascript.ru/forum/job/6497...tml#post428912

Samsam 09.01.2018 12:16

Используя ваши подсказки сделал так .

('body').on('input', '.textarea', function() {
var msg = $(this).html();

//Ищи 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);
});


Насколько это правильно и годно не знаю но работает. Как вы думаете ?
Проблема в данный момент с кареткой которая после каждого обновления $(this).html(d); становится в конец что приводит к проблеме если нудно изменить текст где то по середине.
Подскажите как мне это решить ?

рони 09.01.2018 12:43

Цитата:

Сообщение от Samsam
Подскажите как мне это решить ?

запоминать позицию курсора, потом возвращать на это место и хорошо бы ничего не менять, если менять нечего.
медитировать можно на томже плагине, с курсором там вроде всё в порядке
#L232

Samsam 09.01.2018 16:29

Цитата:

Сообщение от рони (Сообщение 474550)
запоминать позицию курсора, потом возвращать на это место и хорошо бы ничего не менять, если менять нечего.
медитировать можно на томже плагине, с курсором там вроде всё в порядке
#L232

ни как не могу найти решение :help:


Часовой пояс GMT +3, время: 20:01.