jQuery UI ui-找到结果时自动完成加载微调器不 stopping/disappear
jQuery UI ui-autocomplete-loading spinner not stopping/disappear when found results
我通过添加 .ui-autocomplete-loading class 在我的项目中使用 JQuery UI 自动完成加载微调器。当我开始在编辑框中输入时,微调器按预期显示。如果没有匹配结果,则加载微调器消失,表示搜索完成。但如果找到匹配项,微调器仍会显示,即使在做出选择之后也是如此。 (见下图)
我的目标是获得这样的结果:(当搜索完成或找到结果时,微调器应该是 removed/stopped)
https://jqueryui.com/autocomplete/#multiple-remote
这是我的示例代码:
查看:
@model AutoCompleteInMVCJson.Models.City
@{
ViewBag.Title = "www.myexample.com";
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
.ui-autocomplete-loading {
background: white url("../images/ui-anim_basic_16x16.gif") right center no-repeat;
}
</style>
<script type="text/javascript">
$(document).ready(function () {
$("#Name").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/Index",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Name, value: item.Name };
}))
}
})
},
messages: {
noResults: "", results: ""
}
});
})
</script>
型号
public class City
{
public int Id { get; set; }
public string Name { get; set; }
}
控制器:
[HttpPost]
public JsonResult Index(string Prefix)
{
//Note : you can bind same list from database
List<City> ObjList = new List<City>()
{
new City {Id=1,Name="Latur" },
new City {Id=2,Name="Mumbai" },
new City {Id=3,Name="Pune" },
new City {Id=4,Name="Delhi" },
new City {Id=5,Name="Dehradun" },
new City {Id=6,Name="Noida" },
new City {Id=7,Name="New Delhi" }
};
//Searching records from list using LINQ query
var CityName = (from N in ObjList
where N.Name.StartsWith(Prefix)
select new { N.Name });
return Json(CityName, JsonRequestBehavior.AllowGet);
}
}
我该如何解决这个问题?提前致谢。
在 Ajax 成功方法中,您可以使用 .removeClass 函数
简单地从文本框中删除 class
$("#textboxid").removeClass("ui-autocomplete-loading");
感谢 Curiousdev 的意见,经过进一步调试,我找到了解决方案。
添加
$("#Name").removeClass("ui-autocomplete-loading");
success 和 complete 方法都可以解决这个问题。
我通过添加 .ui-autocomplete-loading class 在我的项目中使用 JQuery UI 自动完成加载微调器。当我开始在编辑框中输入时,微调器按预期显示。如果没有匹配结果,则加载微调器消失,表示搜索完成。但如果找到匹配项,微调器仍会显示,即使在做出选择之后也是如此。 (见下图)
我的目标是获得这样的结果:(当搜索完成或找到结果时,微调器应该是 removed/stopped) https://jqueryui.com/autocomplete/#multiple-remote
这是我的示例代码:
查看:
@model AutoCompleteInMVCJson.Models.City
@{
ViewBag.Title = "www.myexample.com";
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
.ui-autocomplete-loading {
background: white url("../images/ui-anim_basic_16x16.gif") right center no-repeat;
}
</style>
<script type="text/javascript">
$(document).ready(function () {
$("#Name").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/Index",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Name, value: item.Name };
}))
}
})
},
messages: {
noResults: "", results: ""
}
});
})
</script>
型号
public class City
{
public int Id { get; set; }
public string Name { get; set; }
}
控制器:
[HttpPost]
public JsonResult Index(string Prefix)
{
//Note : you can bind same list from database
List<City> ObjList = new List<City>()
{
new City {Id=1,Name="Latur" },
new City {Id=2,Name="Mumbai" },
new City {Id=3,Name="Pune" },
new City {Id=4,Name="Delhi" },
new City {Id=5,Name="Dehradun" },
new City {Id=6,Name="Noida" },
new City {Id=7,Name="New Delhi" }
};
//Searching records from list using LINQ query
var CityName = (from N in ObjList
where N.Name.StartsWith(Prefix)
select new { N.Name });
return Json(CityName, JsonRequestBehavior.AllowGet);
}
}
我该如何解决这个问题?提前致谢。
在 Ajax 成功方法中,您可以使用 .removeClass 函数
简单地从文本框中删除 class$("#textboxid").removeClass("ui-autocomplete-loading");
感谢 Curiousdev 的意见,经过进一步调试,我找到了解决方案。
添加
$("#Name").removeClass("ui-autocomplete-loading");
success 和 complete 方法都可以解决这个问题。