2016-05-17 2 views
1

В загрузочном модальный, когда пользователь нажимает клавишу ВВОД, Ajax вызова активируется,предотвратить дублирование вызовов ajax от bootstrap modal?

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

}); 

Но если случайно, если пользователь нажимает клавишу ввода для долго, слишком много представлений сделаны и, таким образом, нежелательные записи введенных в базу данных. Как остановить это неожиданное поведение? Есть ли какая-либо передовая практика в таких случаях?

ответ

2

Я не знаю, если это лучшая практика или нет, но я бы так

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

}); 

затем в вашем АЯКСЕ обратного вызова сбросить переменную windowd.alreadySubmit в false

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

Ваше решение работает. но я, если я захочу снова использовать это событие через некоторое время? Возможно, ваше предложение - добавить 'window.alreadySubmit = false;' после выполнения моего вызова ajax. Я пробовал это, но проблема все еще сохраняется. и, если я долгое время нажимаю клавишу Enter, записывается повторяющаяся запись. –

+0

@RameshPareek хорошо, этот код позволяет отправить, как только предыдущий вызов был выполнен, поэтому, если вызов ajax выполняется быстро, вы можете видеть дублированные записи. Чтобы избежать этого, уточните мой обновленный ответ – pumpkinzzz

+0

, который сделал трюк! достаточно установить его на 1000 мс. пожалуйста, рассмотрите вопрос о том, насколько вы думаете, что это поможет будущим посетителям. –

Смежные вопросы