我试图让用户在评论系统(穷人的文本编辑器)中使用的 textarea 中对文本进行简单的格式化。希望允许他们用光标选择文本,然后单击按钮对其进行格式化。我的问题是如何让 javascript 抓取并返回选定的文本。想象一下它应该是这样的:
<script>
function formatText(field) {
//gets text
var text;
text = field.value.substring(field.selectionStart, field.selectionEnd);
//formats it
var text = '<b'>+text+'</b>';
//returns it
field.value.substring(field.selectionStart, field.selectionEnd); = text;
}
</script>
<body>
<textarea id="field"></textarea><button onclick="formatText('field')">Make bold</button>
</body>
更新:以下代码获取选定的文本,对其进行格式化,然后将其发送回 textarea——但是,它会替换 textarea 中的所有文本......所以我只需要替换 textarea 中选定文本的方法——而不是全部——我'将完成:
<head>
<script type="text/javascript">
function GetSelection () {
var selection = "";
var textarea = document.getElementById("field");
if ('selectionStart' in textarea) {
// check whether some text is selected in the textarea
if (textarea.selectionStart != textarea.selectionEnd) {
selection = textarea.value.substring (textarea.selectionStart,
textarea.selectionEnd);
}
}
else { // Internet Explorer before version 9
// create a range from the current selection
var textRange = document.selection.createRange ();
// check whether the selection is within the textarea
var rangeParent = textRange.parentElement ();
if (rangeParent === textarea) {
selection = textRange.text;
}
}
if (selection == "") {
alert ("No text is selected.");
}
else {
selection = "<b>"+selection+"</b>";
document.getElementById('field').value = selection;
}
}
</script>
</head>
<body>
<textarea id="field" spellcheck="false">Select some text within this field.</textarea>
<button onclick="GetSelection ()">Get the current selection</button>
</body>
我认为有一种方法可以指定 document.getElementByID.value.substr 可能会这样做,但我不知道语法。