Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.10.2022, 10:19
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Этот вариант не подходит. Надо переписывать программный код которым создаются формы, textarea и т.п. Проще вторую кнопку воткнуть для 2-й textarea.

И у меня еще один вопрос: как проверить href регуляркой?

На Perl это выглядело бы так:

if ($url =~ m/^http/) {
...
} else {
...
}
Ответить с цитированием
  #12 (permalink)  
Старый 26.10.2022, 10:29
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Разобрался со вторым вопросом:
if (href.match(/^(http)/)) {
Ответить с цитированием
  #13 (permalink)  
Старый 27.10.2022, 07:00
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

Сообщение от javascript_pupil Посмотреть сообщение
Этот вариант не подходит. Надо переписывать программный код которым создаются формы, textarea и т.п. Проще вторую кнопку воткнуть для 2-й textarea.
<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>
Ответить с цитированием
  #14 (permalink)  
Старый 28.10.2022, 10:03
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Теперь другая проблема: это не работает в IE 11.
Ответить с цитированием
  #15 (permalink)  
Старый 28.10.2022, 10:20
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Еще вопрос: а может быть решать эту задачу другим способом? Не привязываться к каким либо тегам, а работать с выделенным текстом. Т.е. сохранять его где-то, затем обрабатывать добавляя введенную из всплывающего окна информацию (URL в данном случае) и возвращать модифицированный текст обратно, заменяя выделенный и снимая выделение.

Что-то типа этого возможно?

function getSelectionText() {
var txt = '';
  
txt = window.getSelection().toString();

const href = prompt("Link URL", "");

txt.value = txt + href;

}


Вариант не работает, но смысл думаю понятен.

Последний раз редактировалось javascript_pupil, 28.10.2022 в 10:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Получить координаты области выделенного текста oleg.oreshenko Общие вопросы Javascript 0 06.12.2013 11:15
Вывод выделенного текста в форме другого окна Mrjoey Events/DOM/Window 10 22.06.2011 22:31
позиция выделенного текста в textarea, начало/конец `p r o x y jQuery 3 07.05.2009 09:08
Замена выделенного текста alexKniaz Общие вопросы Javascript 0 27.10.2008 23:25