jQuery UI значения автозаполнения не выбираются после выделения с помощью мыши - PullRequest
0 голосов
/ 07 февраля 2019

Я создал функциональность autocomplete, используя jquery.Он прекрасно работает, но, например:

Всякий раз, когда я набираю текст и выбираю значения из списка с помощью мыши, он выбирается впервые, но если я снова набираю и выбираю список.Значения не выбираются.

Ниже приведен мой код.Я не могу понять, почему он не работает.

$(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;
        }    
    }

1 Ответ

0 голосов
/ 16 февраля 2019

Не могли бы вы предоставить ожидаемый результат JSON из запроса?

Поскольку у меня нет вывода JSON, я сделал рабочий пример с автозаполнением на основе AJAX.Вы должны ввести 3 символа, чтобы начать поиск.

$( "#country" ).autocomplete({
	source: function( request, response ) {
		$.ajax({
			type: 'GET',
			url: "https://restcountries.eu/rest/v2/name/" + request.term,
			dataType: "json",
			success: function( resp ) {
        		var data = []
        		resp.forEach(d => {data.push(d.name)})
	            response(data)
			}
		});
	},
	minLength: 3,
	select: function( event, ui ) {
		console.log( ui.item ?
			"Selected: " + ui.item.label :
			"Nothing selected, input was " + this.value);
	},
});
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<input type="text" id="country" />
...