1

送信ボタンでJavaScriptを使用しようとしています。送信ボタンを押すと、コールバック ハンドラ h を使用してリモート コールバックを行うルーチンを実行します。h の結果に基づいて、送信を続行するか、デフォルトを防止してページにとどまるかを決定します。

いくつかのアプローチを試しました。最初の 1 つは、コールバックの後に jquery を使用して送信を実行することです。

$('#submit').on('click', function(e) {
  e.preventDefault();
  run_func_with_callback(h);
}

h() {
  if (success) {
    $('#submit').submit();
  }
}

もう 1 つは、コールバックによってフラグが変更されるまで、無限ループを試みています。

callback_flag = 0;

$('#submit').on('click', function(e) {
  run_func_with_callback(h);
  while(callback_flag == 0) {
    setTimeout(function() {}, 1000); // I want some form of sleep function here
  }

  if (callback_flag == -1) {
    e.preventDefault();
  }
}

h() {
  if (success) {
    callback_flag = 1;
  } else {
    callback_flag = -1;
  }
}

ただし、これらのソリューションはどちらも機能しません。まず、jQuery は実際にはそのようには機能しないと思います。私が行った2番目の方法はスリープ機能ではなく、必要な方法で動作しません。

どんな洞察も歓迎します。ありがとう!

4

2 に答える 2

3

最初のアプローチに固執すると、次のようになります。

$('#submit').on('click', function(e) {
    if(!success) {
        e.preventDefault();
        run_func_with_callback(h);
    }
    else {
        success = false;
    }
}

h() {
    if (success) {
        $('#submit').click();
    }
}

click重要なことは、コールバックでイベントをトリガーし、の値を使用successして条件付きで送信を実行することです。

于 2013-01-12T10:28:06.433 に答える
0

これを試すことができますか?

$('#submit').on('click', function(e) {
  e.preventDefault();
  run_func_with_callback(h);
}

h() {
  if (success) {
    $('#submit').closest("form").submit();
  }
}
于 2013-01-12T10:46:42.420 に答える