Показывать анимацию "загрузки" при нажатии кнопки
Я хочу сделать что-то очень простое.
У меня есть одна кнопка на моей странице.
<form action="/process" method="POST">
<input class="btn btn-large btn-primary" type="submit" value='Analyze Topics'>
</form>
Теперь я хочу, чтобы пользователь нажал эту кнопку отправки. Он показывает, что "загрузка" анимации gif пока не получит ответ от сервера.
Но я боролся с давних времен.
Как это реализовать?
Ответы
Ответ 1
Если вы используете ajax, тогда (как можно проще)
-
Добавьте изображение gif для загрузки в html и сделайте его скрытым (теперь с помощью стиля в html вы можете добавить его в отдельный CSS):
<img src="path\to\loading\gif" id="img" style="display:none"/ >
-
Показывать изображение при нажатии кнопки и скрыть его снова при успешной работе
$('#buttonID').click(function(){
$('#img').show(); //<----here
$.ajax({
....
success:function(result){
$('#img').hide(); //<--- hide again
}
}
Убедитесь, что вы скрываете изображение на обратных вызовах ajax, чтобы убедиться, что gif скрывается, даже если ajax не работает.
Ответ 2
попробуйте
$("#btnId").click(function(e){
e.preventDefault();
//show loading gif
$.ajax({
...
success:function(data){
//remove gif
},
error:function(){//remove gif}
});
});
EDIT: после прочтения комментариев
если вы решите против ajax
$("#btnId").click(function(e){
e.preventDefault();
//show loading gif
$(this).closest('form').submit();
});
Ответ 3
Лучшая загрузка и блокировка этого конкретного div для вызова ajax до тех пор, пока он не сработает, - Blockui
перейдите по этой ссылке http://www.malsup.com/jquery/block/#element
пример использования:
<span class="no-display smallLoader"><img src="/images/loader-small.png" /></span>
script
jQuery.ajax(
{
url: site_path+"/restaurantlist/addtocart",
type: "POST",
success: function (data) {
jQuery("#id").unblock();
},
beforeSend:function (data){
jQuery("#id").block({
message: jQuery(".smallLoader").html(),
css: {
border: 'none',
backgroundColor: 'none'
},
overlayCSS: { backgroundColor: '#afafaf' }
});
}
});
надеюсь, что это действительно помогает в интерактивном режиме.
Ответ 4
$("#btnId").click(function(e){
e.preventDefault();
$.ajax({
...
beforeSend : function(xhr, opts){
//show loading gif
},
success: function(){
},
complete : function() {
//remove loading gif
}
});
});
Ответ 5
//do processing
$(this).attr("label", $(this).text()).text("loading ....").animate({ disabled: true }, 1000, function () {
//original event call
$.when($(elm).delay(1000).one("click")).done(function () {//processing finalized
$(this).text($(this).attr("label")).animate({ disabled: false }, 1000, function () {
})
});
});
Ответ 6
Я знаю, что это очень поздний ответ, но я недавно увидел этот запрос. И нашел рабочий сценарий,
OnClick of Submit используйте приведенный ниже код:
$('#Submit').click(function ()
{ $(this).html('<img src="icon-loading.gif" />'); // A GIF Image of Your choice
return false });
Чтобы остановить Gif, используйте приведенный ниже код:
$('#Submit').ajaxStop();