【发布时间】:2019-02-07 10:51:58
【问题描述】:
我使用 jquery 创建了autocomplete 的功能。它工作得很好,但例如:
每当我键入文本并使用鼠标从列表中选择值时,它都会第一次被选中,但如果我再次键入并选择列表。值没有被选中。
下面是我的代码。我不明白为什么它不工作。
$(document).ready(function () {
$('#txtAssignVendor').autocomplete({
source: AppConfig.PrefixURL + 'VendorData.ashx',
position: {
my: "left bottom",
at: "left top",
}
});});
更新
在下面的 Vendor.ashx 文件中是我使用的代码
public void ProcessRequest(HttpContext context)
{
try
{
//DataTable dt = new DataTable();
string term = context.Request["term"] ?? "";
List<string> VendorNames = new List<string>();
string connString = ConfigurationManager.ConnectionStrings["ConnAPP_NEIQC_PLNG"].ConnectionString;
using (OracleConnection conn = new OracleConnection(connString))
{
OracleCommand cmd = new OracleCommand("", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = ConfigurationManager.AppSettings["PackageName"].ToString() + ".GET_VENDOR_NAME";
cmd.Connection = conn;
cmd.Parameters.Add(new OracleParameter { ParameterName = "P_VENDORNAME", Value = term, OracleDbType = OracleDbType.NVarchar2, Direction = ParameterDirection.Input });
cmd.Parameters.Add(new OracleParameter
{
ParameterName = "TBL_DATA",
OracleDbType = OracleDbType.RefCursor,
Direction = ParameterDirection.Output
});
if (conn.State != ConnectionState.Open) conn.Open();
OracleDataAdapter da = new OracleDataAdapter(cmd);
// da.Fill(dt);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
VendorNames.Add(dr["VENDORNAME"].ToString());
//VendorNames.Add(string.Format("{0}-{1}", dr["VENDOR_CODE"], dr["VENDOR_NAME"]));
}
}
JavaScriptSerializer js = new JavaScriptSerializer();
context.Response.Write(js.Serialize(VendorNames));
}
catch (Exception ex)
{
throw;
}
}
【问题讨论】:
-
是否可以在 JSFiddle 或 Stack sn-p 中添加一个工作示例?
-
@JamesCoyle:让我试试。完成后我会更新它
-
如果您第二次重新绘制下拉 UI 而不是重新使用它,您可能必须重新注册鼠标单击事件。提供的代码不足以确定问题。需要更多信息
-
@JamesCoyle:看看jsfiddle.net/m4p5xkt8/2,它正在工作。但不是我的应用程序中的那个
-
如果不暴露整个画面,就很难看出它为什么不起作用。您的应用是否在互联网上公开?
标签: javascript jquery autocomplete jquery-ui-autocomplete