通过记录onselect并每次存储开头和结尾,我能够从文本区域中获取突出显示的文本。然后,当我单击一个按钮时,我自己构建子字符串。是否有一种简单的方法可以简单地查询选择?
我有点期待html5 dom中有所有这些东西的方法,例如:
textarea.getSelectedStart() textarea.getSelectedEnd(); textArea.setSelected(开始,结束);
此外,有没有一种方法可以在textarea中以编程方式取消选择文本?
我根据下面的第一个解决方案输入代码。这种作品,但有一个奇怪的问题:
<script language=javascript>
function replaceCLOZE(code, questionType) {
var v = code.value;
var s = code.selectionStart;
var e = code.selectionEnd;
var t = v.substr(s, e-s);
var rep = "{:" + questionType + ":="+t+"}";
code.value = v.substr(0,s) + rep + v.substr(e,v.length-e+1);
}
function shortAnswer(code) {
replaceCLOZE(code, "SA");
}
function shortAnswerCaseSensitive(code) {
replaceCLOZE(code, "SAC");
}
function multipleChoice(code) {
replaceCLOZE(code, "MC");
}
文本区域实际上具有code.selectionStart和code.selectionEnd属性。但是上面的代码现在可以工作,它将屏幕上突出显示的文本设置为textarea中的第一个单词。请注意,selectionStart仍然是正确的,但Firefox中实际突出显示的是错误的。
在Chrome中它运行正常。也许这只是firefox中的一个错误,还是应该做些什么来直观地正确更新textarea?
答案 0 :(得分:3)
以下是获取html的textarea的选定文本的简单方法。仍然不清楚您想要什么,因为以下方法只会在警报中为您提供所选文本。
<html><head>
<script>
function alertme(){
var textarea = document.getElementById("textArea");
var selection = (textarea.value).substring(textarea.selectionStart,textarea.selectionEnd);
alert (selection);
}
</script>
</head>
<body>
<p><textarea class="noscrollbars" id="textArea"></textarea></p>
<button onclick="alertme()">Click me</button>
</body></html>
选择文字时,该按钮会提醒您所选内容。 selectionStart为您提供起点和selectionEnd为您提供终点,而substring需要三个参数字符串,起点和终点。