Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Объект TextRange: получить выделенный и текст рядом. (https://javascript.ru/forum/events/66664-obekt-textrange-poluchit-vydelennyjj-i-tekst-ryadom.html)

xbit 31.12.2016 05:40

Объект TextRange: получить выделенный и текст рядом.
 
Всем добрый день и с Наступающим Новым Годом!

Просьба помочь с решением.

Есть текстареа. Мне нужно, по событию (нажатие кнопки) получить объект, где будет три элемента, содержащие: выделенный текст, текст до выделения, текст после выделения. при этом текст до и после нужно из оригинального текстареа удалить.

Буду благодарен за ответы и, особенно, если поделитесь какими-нибудь еще черновыми функциями/наработками для подобных дел. Раньше с текстом не работал, своего ничего нет.

Спасибо.

Malleys 31.12.2016 09:24

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<title>Document</title>
		<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
	</head>
	<body>
		<textarea id="test" cols="30" rows="10">Привет!!! У textarea есть свойства selectionStart/selectionEnd, которые позволяют узнать позицию выделенного текста!</textarea><br>
		<button onclick="getParts(); ">Выдели часть текста и нажми</button>
		<div id="result"></div>
		<script>

	function getParts() {
		var textarea = document.getElementById("test");
		var resultElement = document.getElementById("result");
		var html = [];

		html.push("Выделены символы: ".bold() + textarea.selectionStart + "\u2026" + textarea.selectionEnd);

		html.push("Текст до выделения: ".bold() + textarea.value.slice(0, textarea.selectionStart));

		html.push("Выделенный текст: ".bold() + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd));

		html.push("Текст после: ".bold() + textarea.value.slice(textarea.selectionEnd));

		textarea.value = "Было выделено: " + textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);


		resultElement.innerHTML = html.join("<hr>")

	}

		</script>
	</body>
</html>

xbit 31.12.2016 10:21

Спасибо!


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