2016-05-17 5 views
1

、ユーザーがEnterキーを押す、AJAX呼び出しがトリガされ、ブートストラップ・モーダルから重複したajax呼び出しを防止できますか?ブートストラップモーダルで

$('#amount').keypress(function(event){ 
    if(event.which==13) { 
     $("#final").trigger("click"); // this triggers the ajax call 
    } 

}); 

しかし、ユーザーが長いためにEnterキーを押した場合、誤っている場合、あまりにも多くの応募がなされているので、不要なレコードがありますデータベースに入力します。この予期しない動作をどうやって止めるのですか?そのような場合にベストプラクティスはありますか?ただ

答えて

2

それがベストプラクティスやない場合、私は知らないが、私はこのように

window.alreadySubmit = false; 
$('#amount').keypress(function(event){ 
    if(event.which==13 && !alreadySubmit) { 
     window.alreadySubmit = true; 
     $("#final").trigger("click"); // this triggers the ajax call 
    } 

}); 

を行うだろう、あなたのAJAXの成功コールバックでfalse

windowd.alreadySubmit変数をリセットalernativelyあなたがすることができます次のようにタイムアウトを設定します。

var myTimeout = 3000; //ms = 3 seconds 
window.alreadySubmit = false; 

$('#amount').keypress(function(event){ 
    if(event.which==13 && !alreadySubmit) { 
     window.alreadySubmit = true; 
     $("#final").trigger("click"); // this triggers the ajax call 
     setTimeout(function(){ window.alreadySubmit = false; }, myTimeout); 
    } 

}); 
+0

解決策が動作します。私はいつかこのイベントをもう一度使いたいのですが?私のajax呼び出しが実行された後、あなたの可能な提案は 'window.alreadySubmit = false;'を追加することでしょう。私はこれを試みたが、問題は依然として続く。 Enterキーを長押しすると、重複レコードが入力されます。 –

+0

@RameshPareekまあ、そのコードは前回の呼び出しが完了した後にサブミットを有効にするので、ajaxコールがすぐに実行されると、重複したレコードに気づくことがあります。その私の更新された答え – pumpkinzzz

+0

を確認することを避けるためには、そのトリックをした! 1000msに設定するだけで十分です。将来の訪問者に役立つと思ったら、質問をアップしてください。 –

関連する問題