1

長いテキスト文字列を受け取り、テキスト内のプレースホルダーを識別し、プレースホルダーの代わりに値を指定するようにユーザーに求める関数を作成しようとしています。プレースホルダーのマークアップは、画像やリンクに使用されるマークダウンに似ています。

some text, some more text, ?[name][description] more text, not just commas

namedescriptionは任意のテキストの連続です。これらのプレースホルダーを見つけたら、名前と説明を使用して適切にフォーマットされたダイアログをポップアップし、ユーザーに代わりの値を提供してもらいたいと考えています。

htmlPromptHTML の一部 (プロンプトの主要部分) を渡す場所で、テキスト ボックスがあり、結果と共に提供したコールバック関数を呼び出します (またはCancelnullの場合)が押されます)、次の署名があります。

function (htmlText, inputStartValue, callback)

この関数をプラグインする前に、大まかな準備を書きました。

myText = myText.replace(/(\?\[(.+)\][ ]?(?:\n[ ]*)?\[(.+)\])/g,
   function (wholematch, m1, m2, m3) {
  var repValue = prompt(m2);
  if (repValue == null)
  {
    return m1;
  }
  return repValue;
});

これはDOM組み込みpromptメソッドを使用します-フォーマットに関しては、実際には適切な仕事をしません。

ただし、プラグインの方法は考えられません。モーダル ダイアログをシミュレートhtmlPromptし、 を呼び出して最終結果を提供するだけです。callback

matchではなくの結果を使用して、手動で置換を行うことを考えましたがreplace、私が見る限り、 によって返される値matchは単なる文字列です。全体のテキスト内)。

それとも、私がこれについて完全に間違っていると思いますか? 私が望む全体的な流れは次のとおりです。

  • テキスト内の各プレースホルダーを見つける
  • nameとの両方のdescription値を使用して、ユーザーに交換を促す
  • テキスト内のプレースホルダー式をユーザーが指定した値に置き換えます。
4

1 に答える 1

0

nameおよびタプルのそれぞれについてdescription:

matchを読むために最初に使用します。ユーザーにプロンプ​​トを表示します。次に、それらを置き換えるために使用します。namedesriptionreplace

于 2013-03-04T13:40:25.933 に答える