Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2020, 10:41
Новичок на форуме
Отправить личное сообщение для user2020 Посмотреть профиль Найти все сообщения от user2020
 
Регистрация: 23.05.2020
Сообщений: 6

После события стирается текст в textarea и input
Добрый день!подскажите пожалуйста, есть область для ввода текста и вывода, и поле поиска. После поиска текст найденный выделяется, в textarea и input стирается,как можно сделать, чтобы текст оставался и была возможность делать новый поиск... и как можно сделать чтобы не только напечатанный текст отображался,но и скопированный(сейчас при копировании текст не отображается)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <style>
        </style>
        Search:    <input type="text" id="text-to-find" value="" type="submit" > 
        <p>
          </p>
<form name="search">
    <textarea rows="7" cols="40" name="message"></textarea>
</form>
<div id="printBlock" style="position:absolute; left:400px; top:10px;" ></div>
<script>
(function() {
    document.querySelector('input').addEventListener('keydown', function(e) {
      if (e.keyCode === 13) {
        FindOnPage('text-to-find');
      }
    });
  })();
</script>
<script>
var messageBox = document.search.message;
function onkeypress(e){
    var printBlock = document.getElementById("printBlock");
    var val = String.fromCharCode(e.keyCode);
    printBlock.textContent += val;
}
 
function onkeydown(e){
    if(e.keyCode===8){ 
        var printBlock = document.getElementById("printBlock"), 
            length = printBlock.textContent.length;
        printBlock.textContent = printBlock.textContent.substring(0, length-1);
    }
}
messageBox.addEventListener("keypress", onkeypress);
messageBox.addEventListener("keydown", onkeydown);
</script>
<script>
    function domRangeHighlight(text) {
      var root = document.getElementById('printBlock').firstChild;
      var content = root.nodeValue;
      if (~content.indexOf(text)) {
        if (document.createRange) {
          var rng = document.createRange();
         rng.setStart(root, content.indexOf(text));
          rng.setEnd(root, content.indexOf(text) + text.length);
          rng.surroundContents(highlightDiv);
        } else {
          alert( 'Вероятно, у вас IE8-, смотрите реализацию TextRange ниже' );
        }
      } else {
        alert( 'Совпадений не найдено' );
      }
    }
  </script>
<script type="text/javascript">
    var lastResFind="";
    var copy_page=""; 
    function TrimStr(s) {
         s = s.replace( /^\s+/g, '');
      return s.replace( /\s+$/g, '');
    }
    function FindOnPage(printBlock) {//ищет текст на странице, в параметр передается ID поля для ввода
      var obj = window.document.getElementById(printBlock);
      var textToFind;
      
      if (obj) {
        textToFind = TrimStr(obj.value);//обрезаем пробелы
      } else {
        alert("Введенная фраза не найдена");
        return;
      }
      if (textToFind == "") {
        alert("Вы ничего не ввели");
        return;
      }
      if(document.body.innerHTML.indexOf(textToFind)=="-1")
      alert("Ничего не найдено, проверьте правильность ввода!");
      if(copy_page.length>0)
            document.body.innerHTML=copy_page;
      else copy_page=document.body.innerHTML;
      document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");
      document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),"<b><a name="+textToFind+"style=''>"+textToFind+"</a> </b>"); 
      lastResFind=textToFind; 
      window.location = '#'+textToFind;
     } 
    </script>
</body>
</html>

Пример https://ibb.co/YWqyVTB
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Резиновые дивы с прокруткой Java Script Mary-Jay Элементы интерфейса 10 24.07.2013 17:51
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02