私は、ページと送信ボタンにテキストボックスの束を持っています。テキストボックスのTextChangedイベントを結んで、サーバー側のメソッドを実行しました。ユーザは、テキストボックスに値を入力し、次のテキストボックスにタブアウトし(textchangedイベントをトリガする)、最後に別のサーバ側メソッドを呼び出す送信ボタンをクリックする。すべての機能は非同期です。 submitメソッドは、両方が同じデータを共有するため、textchangeメソッドが終了した後にのみ実行する必要があります。問題は、textchangeメソッドが終了するのに少し時間がかかることがあり、textchange関数が完了する前にsubmitメソッドがトリガーされる場合があります。これをどうやって防ぐのですか?どのように機能をロック/キューするのですか?jquery - この競合状態を防ぐ
1
A
答えて
1
何もロックしないでください。変更イベント+ ajaxが完了するまで、送信ボタンを無効にするだけです。
$('#submitBtn').attr('disabled', 'disabled');
またはjQueryの1.6+のために:
$('#submitBtn').prop('disabled', true);
と変更Ajaxの仕上げ:
$('#submitBtn').attr('disabled', '');//or $('#submitBtn').prop('disabled', false)
0
そのそれの音からベンAlmanのjQueryのキューイングプラグインhttp://benalman.com/projects/jquery-message-queuing-plugin/を見てみましょうあなたが必要とするものかもしれません。
関連する問題
- 1. jQueryのAJAXコールで競合状態を防ぐ
- 2. 選択と更新の競合状態を防ぐ方法
- 3. 競合状態
- 4. 競合状態
- 5. 競合状態
- 6. は私がoccuringから、このような競合状態を防ぐにはどうすればよい(Laravelを)データベーストランザクションを使用した競合状態を
- 7. 競合状態を防ぐためにロックを使用する方法
- 8. 競合状態を防ぐためにセマフォを使用する(C言語)
- 9. jQueryフェードイン/フェードアウト競合状態ですか?
- 10. EventSourcing競合状態
- 11. ブラウザの競合状態を防止するJavaScriptページのリフレッシュ
- 12. PHPはMySQLの競合状態を防ぎます
- 13. アンドロイドdlopen()の競合状態?
- 14. 競合状態の回避
- 15. コンテキストサービスの競合状態
- 16. シグナル間の競合状態
- 17. オーダーの競合状態
- 18. 不変オブジェクトが競合状態を防止する方法
- 19. C#スレッド競合状態
- 20. タイマー、ファイル、競合状態?
- 21. 避け競合状態
- 22. ポート発見競合状態
- 23. ラーベル可能競合状態?
- 24. .NETガベージコレクタ「競合状態」
- 25. 競合状態がそう
- 26. Javaスレッド:マルチスレッド - 競合状態
- 27. ASP.NET |エンティティフレームワーク、競合状態
- 28. 状態結合の防止?
- 29. ログメッセージの書き込み中にZend_Logが競合状態を防ぐ方法を教えてください。
- 30. 複数のchrome.storage APIコールの競合状態を防ぐ最も良い方法は?
私はこれまで考えていましたが、私のケースでは、ユーザーが最後のテキストボックスにいるとき、タブアウトしてテキストボックスの変更機能をトリガーしないという問題があります。送信ボタンを直接クリックすると、テキストボックスの変更機能がトリガーされます。送信を無効にすると、ボタンやフォーム上の他の場所をクリックして変更をトリガーしません。その他の提案はありますか? – tempid
@enigma。すべての変更イベントが完了したら、trueでフラグを保存します。サブミットイベントをキャプチャし、フラグがfalseの場合はデフォルトを防ぎます。それはどうですか? – gdoron
ありがとう、これは私がやったことです、それはうまくいくようです。 – tempid