0

これは緊急であり、解決策を見つけることができませんでした。問題は次のとおりです。

複数のコマンドを複数のマシンに送信する Web アプリを設計しています。今私が持っているコマンドのいくつかは、追加の入力を必要とします. ユーザーにこの追加入力を追加するように求めるjqueryのポップアップウィンドウを設計しました。問題は、すべてのコマンドをループしているときに、最後に選択したコマンドのウィンドウのみがポップアップすることです...これは、ユーザーが別のコマンドに入力する前に入力を入力している間、一時停止していないためです。

javascript/jqueryで実行を継続しないように関数を一時停止するにはどうすればよいですか?

擬似コードの例:

loop each command
{
  for selected command popup windows;
  // pause until user finishes input then go to
  // next line where any function is processed

  function(); //then loop again--> pause --> when user finishes continue to function() etc..

}

あなたの助けと忍耐のためにthx、私は結果なしであらゆる種類の方法を試しました. :)

4

4 に答える 4

3

promptダイアログを使用してユーザー入力を取得できませんか? これはモーダルであり、ユーザーがプロンプトをキャンセルするか、値を指定しない限り、配置された時点で実行を一時停止します。そして、それを醜いとは言わないでください。

var userValue = prompt("Ask your question");

ここで例を参照してください。値を入力するかキャンセルする前にしばらく待ってから、タイムスタンプに注意してください。

于 2010-06-23T21:48:00.673 に答える
2

これは通常、コールバック関数を使用して行われます。すでに jQuery を使用しているので、 Impromptuプラグインのようなものが役立つかもしれません。コールバックを使用してモーダル プロンプトを実行できます。

のようなものです(上記のリンクの例9に部分的に基づいています)。これをデモとしてhttp://jsfiddle.net/28d3C/2/に投稿しました。

var ind = 0;
var values = [];

var count = 3;

function nextPrompt(done)
{
     function processPrompt(v, m, f)
     {
          if(v != undefined)
          {
            var input = f.alertName;
            values[ind] = input;
          }
          if(++ind < count)
          {
            nextPrompt(done);
          }
          else
          {
            done();
          }
    }

    var txt = 'Please enter value ' + ind + ':  <br /><input type="text" id="alertName" name="alertName" value="name here" />';    
    $.prompt(txt,{
            callback: processPrompt,
            buttons: { Hey: 'Hello', Bye: 'Good Bye' }
    });
}

nextPrompt(function()
{
    for(var i = 0; i < count; i++)
    {
      alert(values[i]);   
    }
});
于 2010-06-23T21:51:22.977 に答える
1

簡単に言うと、Javascript の実行を「一時停止」することはできません。目的に合わせて一時停止を十分にエミュレートする場合、このようなことを行うことができますが、同じことではありません。

var answer;

var myInterval = setInterval(function () {
  if (answer != undefined) {
    clearInterval(myInterval);
    // processing code
  }
}, 1000);

answer = prompt("Please enter your name.");
于 2010-06-23T21:35:45.543 に答える
0

私が正しく理解していれば、window.open() の代わりに window.showModalDialog() を使用してウィンドウを起動する必要があると思います。
ダイアログが閉じられるまで実行が保留されます。

別の方法は、コールバック関数を使用することです。

于 2010-06-24T02:49:01.260 に答える