我有一个加载动画,我最初隐藏在application.js文件中:
$('#loading_field').hide();
我有一个自动填充字段,我希望动画在用户开始输入时显示,并在自动填充建议结果出现时消失。下面是我的jquery ui autocomplete插件的jquery代码:
$(".showable_field").autocomplete({
minLength: 1,
source: '/followers.json',
focus: function(event, ui) {
$('.showable_field').val(ui.item.user.name);
return false;
},
select: function(event, ui) {
var video_id = $('#video_id_field').val();
var user_id = ui.item.user.id;
$.post("/showable_videos.js", {video: video_id, user: user_id});
$(':input','#new_showable_video').not(':button, :submit, :reset, :hidden').val('');
return false;
}
});
var obj = $(".showable_field").data('autocomplete');
obj && (obj._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.user.name + "</a>" )
.appendTo( ul );
});
我应该在哪里显示和隐藏动画?
答案 0 :(得分:4)
嗯,jQuery UI会在加载远程数据时自动将“ui-autocomplete-loading”类添加到您的输入中,因此最简单的方法是简单地将动画GIF作为背景图像添加到您的输入中当该类存在时输入。
这就是他们在remote-loaded example on jQueryUI.com中所做的事情(请注意,在此示例中,您必须再键入两个字符才能启动ajax调用)。
<style>
.ui-autocomplete-loading { background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
</style>
答案 1 :(得分:2)
因为您正在使用AJAX加载建议,我认为这应该对您有用:
$('#loading_field').ajaxStart(function () {
$(this).show();
}).ajaxStop(function () {
$(this).hide();
});