У меня есть простой тест автозаполнения, который работает с жестко закодированными данными.
Однако, когда я добавляю свои данные (который содержит более 1000 данных), он не работает и отображает только первую букву, поэтому, если мои данные "Apple"
когда я набираю B - он показывает Банану, но я не могу набрать "BA", поскольку "A" исчезает.
Я ожидал, что я могу написать целое слово, а не первую букву.
Это рабочий код:
var validOptions = ["Bold", "Normal", "Default", "100", "200"]
previousValue = "";
$('#ac').autocomplete({
autoFocus: true,
source: validOptions
})
.keyup(function() {
var isValid = false;
for (i in validOptions) {
if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
});
Значит, эти буквы: жирный "," нормальный "," по умолчанию "," 100 "," 200 ". НО
Как только я изменяю validOptions на:
var validOptions ='@Url.Action("SerialProdNumStockSiteAutoComplete", "Ajax")?stocksitenum=LW&model=' + $("#Form_Prod_Num").val();
Он не работает так, как должен.
есть ли другой способ сделать это, или вы знаете, где я ошибаюсь.
Этот вопрос касается альтернативы .keyup
Код SerialProdNumStockSiteAutoComplete:
public JsonResult SerialProdNumStockSiteAutoComplete(string term,string stocksitenum,string model)
{
return Json(AutoComplete.DeviceFromStockSite(term, stocksitenum, model), JsonRequestBehavior.AllowGet);
}
Устройство со склада:
public static List<string> DeviceFromStockSite(string term, string stocksitenum, string model)
{
//devices will always come from serialised stock
var qryStock =
SC42Ctx.SPNlocs
.Where(x => x.Nloc_Site_Num.StartsWith(stocksitenum)
&& x.Nloc_Part_Num == model
&& x.Nloc_Ord_Num == null)
.Select(
s =>
new TicketSerialNumber
{
SerialNumber = s.Nloc_ID_Num,
Source = stocksitenum,
Call = s.Nloc_Ord_Num.ToString()
})
.ToList();
Когда я копирую URL-адрес, это показывает:
Это было, когда я ввел 4 и не смог добавить ничего другого