jQuery Autocomplete: определение, если введенный текст не совпадает - PullRequest
4 голосов
/ 30 ноября 2008

У меня отлично работает jQuery Autocomplete (UI 1.6rc2), и когда пользователь выбирает элемент, он обновляет скрытое значение формы со связанным идентификатором. Как установить значение скрытой формы на «0», если введенный текст не соответствует результату из списка автозаполнения? В этом случае я буду создавать новую запись.

Ответы [ 6 ]

3 голосов
/ 01 февраля 2011

Я сделал это в функции автозаполнения:

change: function(event, ui){
   $(this).next("input[id^=person_id]").val('');
  return false;

После того, как пользователь выберет эту опцию и она заполнит мой скрытый ввод идентификатором элемента, если в видимых входах произойдут какие-либо изменения, скрытое значение ввода будет очищено. Работает как шарм!

2 голосов
/ 14 октября 2012

Вы также можете использовать опцию «поиск» с автозаполнением.

search: function(event, ui){
   $(this).next("input[id^=person_id]").val('');
}

Кажется, работает. Он срабатывает после задержки и минимальной длины, но хорошо показывает, что вы установили его на minlength = 0.

1 голос
/ 30 мая 2009

Ох, я думаю, я нашел трюк, как превзойти все эти события ... Просто добавьте это к extraParams вместе с другими параметрами, отправляемыми автозаполнению

extraParams: { 
    x: function(){ $("#targetField").val(''); }
}

Это просто очищает поле при отправке запроса, и если результат не найден или ничего не выбрано и введено какое-то новое пользовательское значение, оно просто остается пустым ...

1 голос
/ 30 мая 2009

Я застрял с той же проблемой ... Похоже, что нет события, когда значения не совпадают ... Однако, кажется, что был найден какой-то обходной путь ...

Ксавье из ответов на в этой теме:

selected: function() {
  if(listItems.filter(”.” + CLASSES.ACTIVE)[0]){
    return data && data[ listItems.filter("." + CLASSES.ACTIVE)[0].index ];
  } else {
    if (options.notFound){
      options.notFound();
    } 
  }
}

Это не лучшее решение, на мой взгляд ... Есть еще идеи? Да, и я так и не решил, как мне воспользоваться этим конкретным решением :(

0 голосов
/ 10 августа 2009
$("#txtSearchProvider").autocomplete("../WebServices/PageMethods/AutoComplete.aspx",
                {
                    minChars: 3,
                    formatItem: function(data, i, n, value) {
                        return  value.split("-z-")[0];
                    },
                    formatResult: function(data, value) 
                    {
                        return value.split("-z-")[0];
                    }
                }
            );
            $("#txtSearchProvider").result(function(event, data, formatted) {
                $("#txtSearchProviderHidden").val(data[0].split("-z-")[1]);
            });

Ответ от: ../WebServices/PageMethods/AutoComplete.aspx

Данные 1, Corp-Z-29310 Data 2, Almazan & Barbara, ТОО-z-35745 Дос Сантос Сантос-Z-36327 Calzano & Salzano-z-39295

0 голосов
/ 01 декабря 2008

Согласно ветке комментариев здесь это не представляется возможным. Я думаю, я просто проверю введенное значение по БД и, если оно не существует, создам новое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...