问题描述
|
我有一个加载动画,最初将其隐藏在application.js文件中:
$(\'#loading_field\').hide();
我有一个自动完成字段,我希望动画在用户开始键入时出现,并在出现自动完成建议结果时消失。以下是我的jQuery UI自动完成插件的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 );
});
我应该在哪里显示和隐藏动画?
解决方法
因为您正在使用AJAX加载建议,所以我认为这应该对您有用:
$(\'#loading_field\').ajaxStart(function () {
$(this).show();
}).ajaxStop(function () {
$(this).hide();
});
, 好吧,jQuery UI在加载远程数据时会自动将类'ui-autocomplete-loading \'添加到您的输入中,因此,实现此目的的最简单方法是简单地将动画GIF作为背景图像输入到您的输入中当该课程出现时。
这就是他们在jQueryUI.com上的远程加载示例中所做的工作(请注意,在此示例中,您必须再输入两个字符才能启动ajax调用)。
<style>
.ui-autocomplete-loading { background: white url(\'images/ui-anim_basic_16x16.gif\') right center no-repeat; }
</style>