Этот вариант не подходит. Надо переписывать программный код которым создаются формы, textarea и т.п. Проще вторую кнопку воткнуть для 2-й textarea.
И у меня еще один вопрос: как проверить href регуляркой? На Perl это выглядело бы так: if ($url =~ m/^http/) { ... } else { ... } |
Разобрался со вторым вопросом:
if (href.match(/^(http)/)) { |
Цитата:
<script> var lastTextArea; // Сохраняет ссылку на TextArea под фокусом при нажатии на кнопку вставки ссылки var lastUserLink = "https://javascript.ru/forum/misc/"; // Сохраняет адрес последней введенной ссылки function addLink(button) { if(button.parentNode.contains(lastTextArea)) { const href = prompt("Адрес ссылки", lastUserLink); const text = lastTextArea.value.substring(lastTextArea.selectionStart, lastTextArea.selectionEnd) || href; const injected = "<a href='" + href + "'>" + text + "</a>"; const from = lastTextArea.selectionStart; let last = lastTextArea.selectionEnd; if(href) { lastUserLink = href; // Запоминаем адрес введённой ссылки lastTextArea.value = lastTextArea.value.substr(0, from) + injected + lastTextArea.value.substr(last); last = from + injected.length; // Корректируем выделение, чтобы охватить вставляемый тег ссылки } lastTextArea.focus(); // Возвращаем фокус и восстанавливаем выделение lastTextArea.selectionStart = from; lastTextArea.selectionEnd = last; } } </script> <body> <form> <a href='#' onfocus='lastTextArea = event.relatedTarget' onclick='addLink(this)'><img src='https://javascript.ru/forum/images/editor/createlink.gif'></a><br> <textarea rows=3 cols=80> Ссылка#1 Ссылка№2 </textarea><br> <textarea rows=3 cols=80> Ссылка#3 Ссылка№4 </textarea> </form> </body> |
Теперь другая проблема: это не работает в IE 11. :(
|
Еще вопрос: а может быть решать эту задачу другим способом? Не привязываться к каким либо тегам, а работать с выделенным текстом. Т.е. сохранять его где-то, затем обрабатывать добавляя введенную из всплывающего окна информацию (URL в данном случае) и возвращать модифицированный текст обратно, заменяя выделенный и снимая выделение.
Что-то типа этого возможно? function getSelectionText() { var txt = ''; txt = window.getSelection().toString(); const href = prompt("Link URL", ""); txt.value = txt + href; } Вариант не работает, но смысл думаю понятен. |
Часовой пояс GMT +3, время: 19:50. |