0

テキストを書いているテキストフィールドがあります。

簡単にするために、alert('Boom!')2つの$$の間に書き込みを開始するたびにジャンプするようにします。

たとえば、空白のテキストフィールドがあり、入力を開始します(カーソルは「|」記号です)

Today is a really nice day|

何も起こらない、入力を開始する

Today is a really nice day, $|$

まだ何もありませんが、今入力を開始すると

Today is a really nice day, $someText|$

警告ボックスは、これらのドル記号の間の文字ごとに飛び出す必要があります。

なぜそのような機能が必要なのですか?ユーザーが方程式を入力し始めるたびにlive-equation-preview(MathJaxレンダリング)が必要です。これは$$記号で方程式であることがわかります(間にあるものはすべてレンダリングされます)。

編集:テキストフィールドで複数の$$が可能です。スクリプトは、現在アクティブなものを認識する必要があります(カーソル位置は$$の間にあります)。

4

1 に答える 1

1

jQueryキャレットプラグインを使用できます

http://examplet.buss.hk/download/download.php?plugin=caret.1.01

注: 8 行目からこれらの文字Ôªøを編集して削除します

replace機能。(何も置換するのではなく、一致したパターンのインデックスを使用する)

$("#myText").bind("keyup", function(e){
     var text = $(this).val();
     var caret = $(this).caret().start;

     if(text && text.length > 0){
        text.replace(/\$.*?\$/g, function(m, n){
           if(caret > n && caret < (n + m.length)){
              alert("BOOM");
           }
        });
     }
});

デモ: http://jsfiddle.net/xqXXb/

それを行う方法を示すだけです。これを改善できます。

使用する

$("#myText").bind("keyup keydown change", function(e){ ...

より良い結果のために。

于 2012-03-10T22:33:55.247 に答える