Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.11.2017, 01:26
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

Вот так?

if (el.tagName != 'TEXTAREA') return;


не работает
Ответить с цитированием
  #12 (permalink)  
Старый 21.11.2017, 02:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

копирование выделенного текста из textarea
Chile,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

</head>

<body>
<body>
<textarea name="descr" cols="60" rows="10" >Недавно в Chrome Web Store мне попалось приложение jsFiddle, проект британского программиста Piotr Zalewa
    aka @zalun. По-сути, это очередная песочница для web-программистов, но говоря «очередная» я не подразумеваю
    «никому не нужная». Я долго ждал момента, когда WYSIWYG заменят такие песочницы, и, похоже, дождался</textarea>

<textarea name="text" cols="60" rows="10"></textarea>
<button type="button">цитировать выделенный текст</button>

    <script>
      var txt = '';
      var message = document.querySelector('[name="text"]');
      document.addEventListener('mouseup', function(event) {
          var el = event.target;
          if (el.tagName != 'TEXTAREA' && el.getAttribute('name') != 'descr') return;
          if (txt = window.getSelection) {
              txt = el.value.substring(el.selectionStart, el.selectionEnd);
          } else {
              txt = document.selection.createRange().text;
          }

      })
      document.querySelector('button').addEventListener('click', function(event) {
         message.value += txt;
          txt = '';
      })
    </script>
</body>


</body>
</html>
Ответить с цитированием
  #13 (permalink)  
Старый 21.11.2017, 02:35
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

рони, спасибо вам большое! А я уже начал было копать в гугле как заставить работать именно с textarea, так как решил, что не работает, поскольку она теряет фокус при нажатии на кнопку
Ответить с цитированием
  #14 (permalink)  
Старый 21.11.2017, 11:54
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

У меня тут ещё вопросик. А как сделать, чтобы перед вставкой текста, вставлялся ещё одиночный тег <img src="" alt="" />?

Вот так попробовал, но вставляет только тег:

...

document.querySelector('button]').addEventListener('click', function(event) {
   message.value += '<img src="" alt="" />' + txt;
      txt = '';
})

...
Ответить с цитированием
  #15 (permalink)  
Старый 21.11.2017, 12:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Chile,
что не так??
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

</head>

<body>
<body>
<textarea name="descr" cols="60" rows="10" >Недавно в Chrome Web Store мне попалось приложение jsFiddle, проект британского программиста Piotr Zalewa
    aka @zalun. По-сути, это очередная песочница для web-программистов, но говоря «очередная» я не подразумеваю
    «никому не нужная». Я долго ждал момента, когда WYSIWYG заменят такие песочницы, и, похоже, дождался</textarea>

<textarea name="text" cols="60" rows="10"></textarea>
<button type="button">цитировать выделенный текст</button>

    <script>
      var txt = '';
      var message = document.querySelector('[name="text"]');
      document.addEventListener('mouseup', function(event) {
          var el = event.target;
          if (el.tagName != 'TEXTAREA' && el.getAttribute('name') != 'descr') return;
          if (txt = window.getSelection) {
              txt = el.value.substring(el.selectionStart, el.selectionEnd);
          } else {
              txt = document.selection.createRange().text;
          }

      })
      document.querySelector('button').addEventListener('click', function(event) {
         message.value += '<img src="" alt="" />'+txt;
          txt = '';
      })
    </script>
</body>


</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 21.11.2017, 12:13
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

Работает теперь. Не пойму в чём была беда Ещё раз огромное спасибо!
Ответить с цитированием
  #17 (permalink)  
Старый 21.11.2017, 12:40
Аспирант
Отправить личное сообщение для NeoN Посмотреть профиль Найти все сообщения от NeoN
 
Регистрация: 01.03.2013
Сообщений: 77

беда была в селекторе кнопки видимо querySelector('button]')
Ответить с цитированием
  #18 (permalink)  
Старый 21.11.2017, 15:02
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

Друзья, я вероятно уже достал всех своим поразительным нубством, но… Я тут подумал: а можно ли сделать кнопку неактивной, пока не выделен текст для отправки? Если это не сложно, помогите пожалуйста. Если требует много времени, не стоит, а то я и так уже злоупотребил гостеприимством
Ответить с цитированием
  #19 (permalink)  
Старый 21.11.2017, 16:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Chile,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

</head>

<body>
<body>
<textarea name="descr" cols="60" rows="10" >Недавно в Chrome Web Store мне попалось приложение jsFiddle, проект британского программиста Piotr Zalewa
    aka @zalun. По-сути, это очередная песочница для web-программистов, но говоря «очередная» я не подразумеваю
    «никому не нужная». Я долго ждал момента, когда WYSIWYG заменят такие песочницы, и, похоже, дождался</textarea>

<textarea name="text" cols="60" rows="10"></textarea>
<button type="button" class="quote" >цитировать выделенный текст</button>

    <script>
      var txt = '';
      var message = document.querySelector('[name="text"]');
      var button = document.querySelector('.quote');
      document.addEventListener('mouseup', function(event) {
          var el = event.target;
          if (el.tagName != 'TEXTAREA' && el.getAttribute('name') != 'descr') return;
          if (txt = window.getSelection) {
              txt = el.value.substring(el.selectionStart, el.selectionEnd);
          } else {
              txt = document.selection.createRange().text;
          }
          dis()
      })
      button.addEventListener('click', function(event) {
         message.value += '<img src="" alt="" />'+txt;
         txt = '';
         dis()
      })
      function dis()
      {
         if(txt) button.removeAttribute('disabled');
         else button.setAttribute('disabled', 'disabled')
      }
      dis()
    </script>
</body>


</body>
</html>
Ответить с цитированием
  #20 (permalink)  
Старый 21.11.2017, 16:13
Аватар для Chile
Аспирант
Отправить личное сообщение для Chile Посмотреть профиль Найти все сообщения от Chile
 
Регистрация: 10.02.2016
Сообщений: 45

рони, спасибо! Всё отлично работает.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перетаскивание изображения из одного div-a в другой div Lera78906 Элементы интерфейса 2 01.05.2017 17:59
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
Из одного textarea в другой… Chile Events/DOM/Window 1 10.02.2016 09:16
копирование скрипта с одного сайта на другой media-mobil jQuery 3 16.04.2015 20:39
ктивация одного блока через другой zerofx Элементы интерфейса 6 14.01.2014 00:28