Перемешать выделенный текст на <textarea>с помощью JavaScript - PullRequest
4 голосов
/ 07 марта 2012

Когда я выбираю некоторые тексты на <textarea> с помощью мыши, как я могу перемешать / перемешать их, нажав на кнопку?

Я искал что-то похожее на то, что я хочу здесь, на SOи я видел кое-кого, кто использует substring, selectionStart и selectionEnd.

Что я хочу: когда я выбираю некоторые тексты с помощью мыши, они будут перетасовываться / шифроваться, когда я нажимаю накнопка, и остальные тексты на <textarea>, которые не выделены, должны оставаться нетронутыми / нетронутыми.

Я просто хочу выполнить действие с выделенными текстами.

Это большеаналогично текстовому редактору, например, когда вы выделяете некоторые тексты, а затем нажимаете кнопку полужирный , выделенные тексты станут полужирным .

PS Этодолжны быть перетасованы отдельными символами.

РЕДАКТИРОВАТЬ: Понятно!Мне просто нужно было отделить строку выбора.Мой код работает сейчас.Это очень полезно - https://stackoverflow.com/a/9605191/1101391

К сожалению, IE 9 и ниже не поддерживает свойства selectionStart и selectionEnd для <input> и <textarea>.Вот решение, которое сработало для меня - https://stackoverflow.com/a/9276457/1101391

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Предположим, вы называете текстовое поле идентификатором content:

var textarea = document.getElementById('content');
var content = textarea.value;

var start = textarea.selectionStart;
var end = textarea.selectionEnd;

var before = content.slice(0, start);
var after = content.slice(end);
var selected = content.substring(start, end);
selected = shuffleStringByMagic(selected);

textarea.value = before + selected + after;
1 голос
/ 07 марта 2012

Вы имеете доступ к полному тексту и знаете подстроку, где выбор начинается и заканчивается.Попробуйте что-то вроде этого:

var txtArea = document.getElementById("foo");
var before = txtArea.value.substr(0, txtArea.selectionStart);
var selection = txtArea.value.substr(txtArea.selectionStart, txtArea.selectionEnd + 1);
var after = txtArea.value.substr(txtArea.selectionEnd, txtArea.value.length);
txtArea.value = before + scrambleThisString(selection) + after;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...