当我使用鼠标在<textarea>
上选择一些文本时,如何通过单击按钮来对其进行随机播放/加扰?
我在SO上搜索了类似于我想要的内容,我看到一些人使用substring
,selectionStart
和selectionEnd
。
我想要的是:当我用鼠标选择一些文本时,当我点击一个按钮时它将被洗牌/加扰,<textarea>
上未被选中的其他文本应该保持不变/完好。
我只想对所选文本执行操作。
它更类似于富文本编辑器,例如当您选择某些文本,然后单击粗体按钮时,所选文本将变为粗体。
P.S。 它应该由个别角色洗牌。
修改 得到它了!我只需要分离选择字符串。我的代码现在有效。这非常有用 - https://stackoverflow.com/a/9605191/1101391
不幸的是,IE 9及更低版本不支持selectionStart
和selectionEnd
上的<input>
和<textarea>
属性。这是适用于我的解决方案 - https://stackoverflow.com/a/9276457/1101391
答案 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;