Согласен с комментарием Teja. Если вы не выполняете асинхронно, независимо от того, действительно ли отображение gif основано на быстром запуске браузера загрузки следующей страницы (или обратной страницы).
Что вы могли бы сделать, если вы действительно хотите, чтобы показать GIF (придется быть Аяксом некоторых описаний, хотя) является ...
$("#btnSubmit").click(function(e){
e.preventDefault(); // stops any 'immediate' post back or re-direction
$("#loader").hide()
.html("<img src='<?= url::base() ?>themes/img/loading.gif' border='0' />")
.delay(1000).fadeIn(200, function(){
// submit form using $.ajax or whatever suits - rebuild page on callback or navigate to new page
});
});
Вообще говоря, хотя, как и Йонас и Тея сослались на, если вы не делаете ajax - тогда пользовательская обратная связь уже существует (то есть версия браузера «loader gif» будет отображаться, потому что она пытается загрузить новую страницу) - так зачем беспокоиться о том, чтобы обойти дома, чтобы получить загрузчик gif на вашей странице и сделать его «Web 2.0»?
Либо сделайте ajax, либо пусть браузер даст пользователю визуальную обратную связь.
Вы не делаете никаких аяксов. Вы напрямую отправляете форму, и она должна непосредственно перейти на следующую страницу. –