0

Javascriptを使用して、テキストエリアのキャレット位置まで正規表現のすべての一致を置き換える必要があります。たとえば、textareaのテキストが「6人の生徒が2冊の本を5つのクラスに運ぶ」で、カーソルが本に置かれ、正規表現が/ \ d /の場合、数字の6と2は次のように置き換える必要があります。 4.置換機能とキャレット位置の取得方法を知っていますが、この問題を解決するにはどうすればよいですか?事前に助けてくれてありがとう!

4

2 に答える 2

4
textareaClicked = function(e){
    var pos = e.target.selectionStart;
    var beforeSelection = e.target.innerHTML.slice(0,pos);
    var afterSelection = e.target.innerHTML.slice(pos);
    var newHTML = beforeSelection.replace(/\d/g,4) + afterSelection;
    e.target.innerHTML = newHTML;
    e.target.setSelectionRange(pos,pos);
};

document.getElementById('foo').onclick=textareaClicked;

このjsfiddleで実際の動作を確認してください。

于 2012-07-07T07:03:27.440 に答える
0

おそらくもっとエレガントな方法がありますが、テキスト領域からテキストをコピーし、文字列をカレット位置で2つのサブ文字列に分割し(検索方法を知っていると言っています)、最初のサブ文字列を置き換えてから、 2番目のサブストリングと連結します。それをテキスト領域にコピーして戻し、キャレットの位置を適切に更新してください。

于 2012-07-07T07:00:16.507 に答える