0

mathquill を使用してラテックスをレンダリングしています。編集可能な mathquill 要素があります。

プログラムでコンテンツをクリアする方法を知りたいです。

手動でクリアすると (バックスペース)、すべて正常に動作しますが、jQuery を使用して DOM から要素を削除すると、古い値が新しい値と連結されるため、キャッシュが使用されているように見えます。

誰か助けてくれませんか?

ありがとう

4

3 に答える 3

1

DOM を手動で編集しようとすると、問題が発生します。代わりに、次のように MathQuill の API を使用します。

$('.mathquill-editable').mathquill('latex', '');

$('.mathquill-editable')ページ上の編集可能な mathquill 要素をすべてクリアしたい場合を除き、より具体的なセレクターに変更します。

これにより、テキストボックスの内容がクリアされ、機能が損なわれることはありません。ただし、テキストボックスは 6x6 ピクセルの小さな正方形に折りたたまれ、ユーザーがクリックしない限り、通常のサイズには拡大されません。確かに機能不全ではありませんが、最も美しいわけでもありません。

これは、スペース キー ( source )のカスタム キー ダウン イベントを作成することで修正できます。

var space = $.Event('keydown');

space.bubbles = false;
space.cancelable = false;
space.charCode = 32;
space.keyCode = 32;
space.which = 32;

イベントは、可視要素自体ではなく、内部の mathquill の偽のテキスト領域に適用されることに注意してください。

$('.mathquill-editable').find('textarea').trigger(space);

繰り返しますが、セレクターがクリアしたい要素に固有のものであることを確認してください。

最後の問題 - 要素はフォーカスされません。これが問題かどうかはわかりませんが、編集を続けるには、ユーザーが要素を再選択する必要があります。.focus()これを修正するには、次のメソッドを適用する必要があります。

$('.mathquill-editable').find('textarea').focus();
于 2016-01-10T20:30:14.067 に答える
1

APIが変更された可能性があります。mathquillの内容をクリアするには、次のコードを使用します

//let MQ = MathQuill.getInterface(MathQuill.getInterface.MAX);
MQ.MathField($('.mathquill-editable')).latex("");
于 2016-03-19T18:04:43.520 に答える