使用JavaScript </textarea>在<textarea>上随机播放选定的文本

时间:2012-03-07 16:08:05

标签: javascript dom

当我使用鼠标在<textarea>上选择一些文本时,如何通过单击按钮来对其进行随机播放/加扰?

我在SO上搜索了类似于我想要的内容,我看到一些人使用substringselectionStartselectionEnd

我想要的是:当我用鼠标选择一些文本时,当我点击一个按钮时它将被洗牌/加扰,<textarea>上未被选中的其他文本应该保持不变/完好。

我只想对所选文本执行操作。

它更类似于富文本编辑器,例如当您选择某些文本,然后单击粗体按钮时,所选文本将变为粗体

P.S。 它应该由个别角色洗牌。

修改 得到它了!我只需要分离选择字符串。我的代码现在有效。这非常有用 - https://stackoverflow.com/a/9605191/1101391

不幸的是,IE 9及更低版本不支持selectionStartselectionEnd上的<input><textarea>属性。这是适用于我的解决方案 - https://stackoverflow.com/a/9276457/1101391

2 个答案:

答案 0 :(得分:1)

您可以访问全文并了解选择开始和结束的子字符串。尝试这样的事情:

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;

答案 1 :(得分:1)

假设您将ID为content的textarea命名为:

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;