如何用 Javascript 替换文本区域中的选定文本?
How to replace selected text in a textarea with Javascript?
我有一个文本区域和一个将以下文本添加到文本区域的按钮:
" - List Item "
如果在文本区域中选择了一些文本,我希望添加的文本显示为:
" - (selected text) "
因此,解决此问题的方法是使用 if 函数查看文本区域内是否选择了文本,如果是,则接收突出显示的文本,以便将其附加到文本区域中的文本。
附加部分可以简单地通过使用 document.getElementById(textarea).value += string
来完成,但我不确定是否检查文本区域中的某些文本是否被选中并接收它。
对于非 IE 浏览器,您可以使用文本区域对象的 selectionStart 和 SelectionEnd 属性执行类似操作:
function createListElement() {
if(document.activeElement === textarea) {
if(typeof textarea.selectionStart == 'number' && typeof textarea.selectionEnd == 'number') {
// All browsers except IE
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var selectedText = textarea.value.slice(start, end);
var before = textarea.value.slice(0, start);
var after = textarea.value.slice(end);
var text = before + '- ' + selectedText + after;
textarea.value = text;
}
}
}
但是对于 IE 来说,这种微不足道的操作变得越来越困难,您可以找到更多 here。
希望对您有所帮助:)
我有一个文本区域和一个将以下文本添加到文本区域的按钮:
" - List Item "
如果在文本区域中选择了一些文本,我希望添加的文本显示为:
" - (selected text) "
因此,解决此问题的方法是使用 if 函数查看文本区域内是否选择了文本,如果是,则接收突出显示的文本,以便将其附加到文本区域中的文本。
附加部分可以简单地通过使用 document.getElementById(textarea).value += string
来完成,但我不确定是否检查文本区域中的某些文本是否被选中并接收它。
对于非 IE 浏览器,您可以使用文本区域对象的 selectionStart 和 SelectionEnd 属性执行类似操作:
function createListElement() {
if(document.activeElement === textarea) {
if(typeof textarea.selectionStart == 'number' && typeof textarea.selectionEnd == 'number') {
// All browsers except IE
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var selectedText = textarea.value.slice(start, end);
var before = textarea.value.slice(0, start);
var after = textarea.value.slice(end);
var text = before + '- ' + selectedText + after;
textarea.value = text;
}
}
}
但是对于 IE 来说,这种微不足道的操作变得越来越困难,您可以找到更多 here。
希望对您有所帮助:)