I ' m пытается заставить плагин автозаполнения заполнить одно текстовое поле названием университета, а другое - кодом университета. Приведенный ниже код возвращает результаты и заполняет текстовое поле названия университета, но я не могу понять, как заполнить другой ввод.
Я пробовал следовать этому примеру , но столкнулся с проблемами даже при вызове веб-метода. Странно то, что казалось, что ajax был вызван до того, как автозаполнение было прикреплено к текстовому полю, в которое вводит пользователь. Не уверен, что запускало js для вызова метода автозаполнения.
Мне пришлось объединить части из приведенного выше с документом jquery ui при автозаполнении с использованием json ( ссылка ). Но я до сих пор не знаю, как сделать так, чтобы второй ввод был заполнен, как в первом примере.
есть идеи?
Здесь ' s jquery и html
Вот мой .net webmethod
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
using System.Web.Script.Services;
using System.Text;
using System.Data;
[ScriptService()]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AutoComplete : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List GetUniversities(string data)
{
List UniversityList = new List();
try
{
clsDataBase db = new clsDataBase();
DataTable dt = new DataTable();
StringBuilder sql = new StringBuilder();
Dictionary parms = new Dictionary();
sql.Append(" SELECT univ_code ");
sql.Append(" , INITCAP(univ_desc) AS descr ");
sql.Append(" FROM lk_university ");
sql.Append(" WHERE UPPER(univ_desc) LIKE UPPER(?) ");
sql.Append(" ORDER BY univ_desc ");
parms.Add("university", "%" + data + "%");
dt = db.executeParmQuery(sql.ToString(), parms);
DataView dv = new DataView(dt);
ArrayList filteredList = new ArrayList();
foreach (DataRowView drv in dv)
{
University university = new University();
university.UnivCode= drv["univ_code"].ToString();
university.Descr = drv["descr"].ToString();
UniversityList.Add(university);
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
//return null;
}
//}
return UniversityList;
}
public class University
{
string _value;
public string value
{
get { return _Descr + " (" + _UnivCode + ")"; }
}
string _Descr;
public string Descr
{
get { return _Descr; }
set { _Descr = value; }
}
string _UnivCode;
public string UnivCode
{
get { return _UnivCode; }
set { _UnivCode = value; }
}
}
}
EDIT
Я смог заставить его работать, добавив событие select. В моем предыдущем тестировании он был там, но не в том месте (изначально вложенный в событие успеха). Также пришлось добавить три строки в событии успеха, которые устанавливают значение: item.Descr, Descr: item.Descr и UnivCode: item.UnivCode. Я не совсем понимаю, на что они ссылаются или что они делают, поскольку фактическая настройка входов выполняется в событии select, где я указываю фактический идентификатор входов ($ ('# university'). Val (ui .item.Descr);), но это было необходимо для того, чтобы код заработал.
Вот рабочий jquery без каких-либо других изменений в коде html или .net.