2012-06-19 3 views
2

У меня есть форма отправки AJAX, написанная с плагином проверки jQuery. Все работает отлично, но я заметил, что люди повторно отправляют форму до завершения скрипта и вызывают дубликаты записей в нашей базе данных. Вот код, который я до сих пор:AJAX Форма отображения gif

$(document).ready(function(){ 
$("#myform").validate({ 
    debug: false, 
    rules: { 
     fname: {required: true}, 
     sname: {required: true}, 
     sex: {required: true}, 
    }, 
    messages: { 
     fname: {required: "- Field required."}, 
     sname: {required: "- Field required."}, 
     sex: {required: "- Field required."}, 
    }, 
    errorPlacement: function(error, element) { 
     if (element.is(":radio")) { 
     error.appendTo('.radioError'); 
     } 
     else { 
     error.insertAfter(element); 
     } 
    }, 
    submitHandler: function(form) { 
     $.post('process_participant.php', $("#myform").serialize(), function(data) { 
      $('#results').html(data); 
     }); 
     } 
    }); 
}); 

Может кто-нибудь объяснить мне, как увеличить этот код, чтобы поместить загрузки GIF в мои результатах DIV, пока мой сценарий не будет закончен и загрузка GIF заменяется моими фактическими результаты ? Я думаю, что это будет препятствовать людям дважды щелкнуть кнопку отправки.

ответ

0

В вашей submitHandler функции, вы можете скрыть свою форму, прежде чем процесс на $.post вызов, а затем в функции обратного вызова $.post, повторно показать свою форму, и делай все, что хочешь.

submitHandler: function(form) { 
    $("#myform").hide(); // Hide the form 
    // Here you can insert a loading pic 
    $.post('process_participant.php', $("#myform").serialize(), function(data) { 
     // Here you can remove the loading pic 
     $("#myform").show(); // Show the form 
     $('#results').html(data); 
    }); 
} 
2

Что-то вроде этого сделало бы трюк. Я также отключаю кнопку отправки до тех пор, пока сообщение не закончится, чтобы избежать дублированных подписок.

$('#mySubmitButton').prop('disabled',true); // Disable submit button 
$('#myAjaxIndicator').show(); // Show ajax indicator 

$.post('process_participant.php', $("#myform").serialize(), function(data) { 
    $('#results').html(data); 
}) 
.complete(function() { 
    $('#mySubmitButton').prop('disabled',false); // Enable submit button 
    $('#myAjaxIndicator').hide(); // Hide ajax indicator 
}); 

complete обратного вызова выполняется в случае успеха или ошибки, так что вы включите кнопку и скрыть индикатор в любой ситуации.

-1
$("#myform").submit(function(){ 
    $('#results').html('<img src="gifUrl" />'); 
}); 

или именно в этом случае

submitHandler: function(form) { 
    $('#results').html('<img src="gifUrl" />'); 
    $.post('process_participant.php', $("#myform").serialize(), function(data) { 
     $('#results').html(data); 
    }); 
    } 
+0

URL-адрес GIF не работает. Он просто печатает URL-адрес изображения на странице, например. images/loading.gif - как выглядит синтаксис? – AzzyDude

+0

Этот ответ поставил бы буквальный текст «gifUrl» в div. Не правильный ответ, -1 –

+0

Черт, я на самом деле имел в виду изображение html-кода. Например Goldie

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