【发布时间】:2010-03-25 21:24:37
【问题描述】:
我一直在到处搜索,只是没有看到有人这样做 - 是否有可能有某种带有 jQuery UI 自动完成功能的微调器/加载器? (1.8) 在获取数据时?
【问题讨论】:
标签: css jquery-ui jquery-ui-autocomplete
我一直在到处搜索,只是没有看到有人这样做 - 是否有可能有某种带有 jQuery UI 自动完成功能的微调器/加载器? (1.8) 在获取数据时?
【问题讨论】:
标签: css jquery-ui jquery-ui-autocomplete
我的解决方案是使用 .ui-autocomplete-loading CSS 类,当 ajax GET 请求正在进行时,它会在输入元素上添加和删除:
input[type='text'].ui-autocomplete-loading {
background: url('/icons/loading.gif') no-repeat right center;
}
当然,这不是一个非常灵活的解决方案,因为您无法在输入元素之外显示微调器,但在我的情况下,它正是我正在寻找的 UX。
【讨论】:
您应该能够在具有自动完成功能的字段旁边放置一个微调器图像并最初将其隐藏。然后使用回调函数隐藏/显示它。
然后使用搜索选项显示微调器并打开以隐藏它:
v1.8 及以下
$( ".selector" ).autocomplete({
search: function(event, ui) {
$('.spinner').show();
},
open: function(event, ui) {
$('.spinner').hide();
}
});
v1.9 及更高版本
$( ".selector" ).autocomplete({
search: function(event, ui) {
$('.spinner').show();
},
response: function(event, ui) {
$('.spinner').hide();
}
});
【讨论】:
CSS 解决方案
如果加载元素是输入控件的同级元素,则可以使用 CSS 通用同级组合符 (~):
.loading {
/* whatever */
}
#autocomplete.ui-autocomplete-loading ~ .loading {
background-image: url(loading.gif);
}
【讨论】:
input[type='text'].ui-autocomplete-loading {
background: url('http://www.hsi.com.hk/HSI-Net/pages/images/en/share/ajax-loader.gif') no-repeat
right center;
}
【讨论】: