jquery.autocomplete解决方法
jquery.autocomplete
输入首字母的时候 有自动提示,输入第二个字母或者以后字母就没有提示
这是相关代码
前台
js
控制器
在ff firbug调试 ,当输入第二个字母或后面的关键字时 响应的数据源是对的,但是就是没有自动提示.
mvc的,帮忙看看
------解决思路----------------------
换个autocomplite插件吧,这个问题不好说,要是不好解决,换插件,我用过ligerui 的自动完成插件不错
------解决思路----------------------
首先,你的代码的input绑定两个事件的原因是什么?onchange一个是不是就可以了?
第二,你的代码应该是在用户没输入一个字符就往服务器发送一次请求,有没有可能前一次请求发送出去之后,还没有收到返回值就又需要发送第二次请求了?建议加一个延时,并且在下一次请求发送的时候,如果上一个请求还没有来记得返回,取消上一个请求。这样可以减轻客户端和服务器的负担,毕竟每次请求和服务器查询都是要消耗资源的。
------解决思路----------------------
直接绑定jquery的autocomplete就好了吧,干嘛还得自己用ajax请求数据?。。source配置为url地址,url地址返回autocomplete需要格式的数据就行了
http://api.jqueryui.com/autocomplete/#option-source
输入首字母的时候 有自动提示,输入第二个字母或者以后字母就没有提示
这是相关代码
前台
<input id="supplier_s" name="supplier_s" type="text" value="" oninput="supplier(this)" onpropertychange="supplier(this)" runat="server" />
js
function supplier(obj) {
$.ajax({
type: "post",
//'/Purchase/FindSupplier?Supplier=' + obj.value,
url: '@Url.Action("FindSupplier","Purchase")',
data: "Supplier=" + obj.value,
//contentType: "application/json",
success: function (result) {
//alert(result);
var results = result.split(",");
$("#supplier_s").autocomplete(results);
//alert(result);
},
error: function (err) {
alert(err);
}
});
}
控制器
[HttpPost]
public JsonResult FindSupplier(string Supplier)
{
string Suppliers="%"+Supplier+"%";
//取得模糊查询的数据源
string sql = string.Format(@"select SupplierName from jxc_supplier where SupplierName like '{0}'", Suppliers);
List<Supplier> dt = new DbHelper().Context.Sql(sql).QueryMany<Supplier>();
//回传数据源
string data = "";
int i;
for (i = 0; i < dt.Count; i++)
{
//往字符串中添加数据并用,号隔开
if (i < (dt.Count - 1))
{
data += dt[i].SupplierName + ",";
}
else
{
data += dt[i].SupplierName;
}
}
//ViewBag.Supplier = data;
return Json(data);
}
在ff firbug调试 ,当输入第二个字母或后面的关键字时 响应的数据源是对的,但是就是没有自动提示.
mvc的,帮忙看看
------解决思路----------------------
换个autocomplite插件吧,这个问题不好说,要是不好解决,换插件,我用过ligerui 的自动完成插件不错
------解决思路----------------------
首先,你的代码的input绑定两个事件的原因是什么?onchange一个是不是就可以了?
第二,你的代码应该是在用户没输入一个字符就往服务器发送一次请求,有没有可能前一次请求发送出去之后,还没有收到返回值就又需要发送第二次请求了?建议加一个延时,并且在下一次请求发送的时候,如果上一个请求还没有来记得返回,取消上一个请求。这样可以减轻客户端和服务器的负担,毕竟每次请求和服务器查询都是要消耗资源的。
------解决思路----------------------
直接绑定jquery的autocomplete就好了吧,干嘛还得自己用ajax请求数据?。。source配置为url地址,url地址返回autocomplete需要格式的数据就行了
http://api.jqueryui.com/autocomplete/#option-source