- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
При добавлении к полям формы автозаполнения возникает ошибка
Вот сам код автозаполнения
Версия квери 1.8.1 + jQuery UI - v1.11.4
Пробовал гуглить и использовать замену autocomplete на ui-autocomplete, а item.autocomplete на ui-autocomplete-item - не помогает.
Что еще можно попробовать?
Там же написано, что невозможно установить свойство _renderItem у undefined
Ваша конструкция
Возвращает undefined
Я так понимаю весь вопрос к плагину для jQuery
Попробовал версию плагина jQuery UI - v1.12.1
и вариант по совету отсюда https://jqueryui.com/upgrade-guide/1.10/#autocomplete
return $("<li></li>").data("ui-autocomplete-item", t).append(t.value).appendTo(e);
}
}
ошибка не пропала (
Попробовал версию плагина jQuery UI - v1.12.1
и вариант по совету отсюда https://jqueryui.com/upgrade-guide/1.10/#autocomplete
ошибка не пропала (
А почему она должна пропасть то? Что такое .data('autocomplete') и почему у неё должно быть какое то свойство _renderItem?
На сколько я помню, функция jQuery data('name') возвращает значение атрибута data-* у элемента, от куда там долженг быть объект то на выходе? Так как $(k).autocomplete({...}) врядли возвращает элемент, а тем более элемент с data-ui-autocomplete то у вас и получается на выходе undefined к которому вы обращаетесь как к объекту в попытке установить свойство _renderItem.... Учите мат часть сначала, будет сильно легче.
Вы от куда код скопировали? Дайте первоисточник
PS Даже в доке по другому, найдите 10 отличий называется
Aisamiery, скрипт автозаполнения скопировал с другого компонента своего сайта, там все работает проблем нет.
К сожалению JS не знаю, понять его не могу. Обновил в нем только название функции и компонента + добавил 10 штук autocomplete("#search...
В данный момент на конструкции
return $("<li></li>").data("ui-autocomplete-item", t).append(t.value).appendTo(e);
}
}
Автозаполнение работает, но выдает результат первые 10 из базы. Т.е. чтобы я не вводил - получаю первые 10 результатов.
Думаю, что виновата ошибка озвученная в начале, пытаюсь методом научного тыка ее пофиксить.
Запрос для функции searchFirm писал я, вот он
Dram, проверьте что в $fullname у вас на php, помимо sql инъекции там может быть просто пусто и по этому у вас будет всегда один результат, так как LIKE '%%' это по сути всё что угодно
Как заявляет первая линка на stackoverflow, то с версии jQuery UI 1.10.0 были внесены правки в автозаполнение. Попробуйте использовать
}).data("ui-autocomplete")._renderItem = function(e, t) {
и
.data("ui-autocomplete-item", t)
за место ваших аналогичных строк или подключите библиотеку jQuery UI 1.10.0 ниже этой версии.
Тут есть ряд фиксов: https://stackoverflow.com/questions/9513251/cannot-set-property-renderitem-of-undefined-jquery-ui-autocomplete-with-html
По лимиту же у вас запрос SELECT * FROM `__firm` WHERE `univ` LIKE '%{$fullname}%' GROUP by univ limit 10
В котором limit 10 означает как раз таки выводить пепрвые 10 записей
Aisamiery, спасибо, вы были правы, не до конца отредактировал скрипт
нужно было так
Теперь заработало, ошибка не пропала, но все работает.
Но осталось последняя нерешенная проблема. У меня полей на странице может быть от 1 до 10 (это личный кабинет юзера и он может сам их добавлять).
Поэтому я добавил
autocomplete("#search2");
autocomplete("#search3");
autocomplete("#search4");
autocomplete("#search5");
autocomplete("#search6");
autocomplete("#search7");
autocomplete("#search8");
autocomplete("#search9");
autocomplete("#search10");
Начинаю тестировать - загружается ЛК с двумя полями - #search1 и #search2 (в них автозаполнение работает).
Нажимаю кнопку добавить поле - появляется еще поле с #search3 и вот в нем и далее автозаполнение уже не работает.
Ошибка на странице все та же из первого сообщения.
---------- Добавлено 28.04.2020 в 17:36 ----------
SocFishing, SQL и PHP я немного знаю, это вот с JS совсем слабо. Т.е. я знаю что такое лимит и это я сам писал запрос. На счет SQL инъекций тоже продумал.
вызывай autocomplete("поле"); после создания этого поля
tommy-gung, спасибо! получилось!
Упрощенный вариант, список li формируется в php обработчике