onselect を記録し、毎回先頭と末尾を保存することで、強調表示されたテキストをテキストエリアから取り出すことができました。次に、ボタンをクリックすると、部分文字列を自分で作成します。単に選択を照会する簡単な方法はありませんか?
私は、html5 dom にこれらすべてのメソッドがあることを期待していました。次のようなものです。
textarea.getSelectedStart() textarea.getSelectedEnd(); textArea.setSelected(開始、終了);
また、テキストエリア内のテキストをプログラムで選択解除する方法はありますか?
以下の最初のソリューションに基づいてコードを挿入しています。この種の作品ですが、奇妙な問題があります:
<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 があります。しかし、上記のコードは動作し、画面上で強調表示されたテキストをテキストエリアの最初の単語に設定します。selectionStart はまだ正しいですが、Firefox で実際に強調表示されているものは間違っています。
Chromeでは正常に動作します。多分これはFirefoxの単なるバグですか、それともテキストエリアを視覚的に適切に更新するために他に何かすべきことがありますか?