Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: проблема при использовании нескольких полей с "живым поиском"
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2016
Помог: 0 раз(а)
При использовании нескольких полей input с "живым поиском" возникла проблема при выборе значения из вариантов результатов поиска. При вводе в первое поле все ОК, при выборе значения для следующего поля значение подставляется не только в нужное поле, но и все вышестоящие и т.д. Необходимо чтобы в каждом поле сохранялся только выбранный для него вариант.
В реальном случает работа идет с базой данных откуда подбираются значения полей, в приведенном же ниже коде я просто смоделировал эту ситуацию в более простом варианте.
Если из скрипта убрать ajax запрос и данные брать просто из массива сформированного в самом скрипте, а выбор варианта поиска описать
$(".search_result li").on("click", function() {
$(d.getElementsByName(name)[0]).val($(this).text());
})
все работает корректно. Т.е. если я правильно понял - проблема в формировании результатов поиска как результата ajax запроса (вынести данные за него и вывести строки li у меня не получилось...).
Помогите пожалуйста, неделю уже мучаюсь .
Viper
Отправлено: 11 Апреля, 2016 - 14:54:19
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Не мешайте чистый javascript и jquery синтаксисы. Выглядит как говно, и сложно дебажить.
Формируйте всё внутри $.ajax метода. Вы не сможете вынести за этот метод результаты. Да это и не нужно.
variants = JSON.parse(data); лишнее
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2016
Помог: 0 раз(а)
Насчет качества кода согласен, но пока по другому не могу .
Вы проверяли написанный вами код на работоспособность? У меня почему-то без variants = JSON.parse(data), data - это кодированная строка, которая абсолютно нечитабельная (возможно в настройках ajax запроса можно что-то указать и решить эту проблему без использования parse). Сам результат выполнения скрипта ничем не отличается от того что был у меня - все-равно при изменении нижних полей изменяются значения и верхних... .
А не подскажите почему не работает вариант с записью (при такой форме записи у меня все корректно работало в тестовом варианте без ajax запроса)
$(".search_result li").on("click", function() {
$this.val($(this).text());
});
а, только с $(".search_result").on("click", "li", function() {
$this.val($(this).text());
});
?
Провел эксперимент, хочу уточнить что синхронно меняются значения только у тех полей, у которых событие keyup уже происходило, независимо от их порядка. Может скрипт "запоминает" что за этим полем уже закреплено событие и каждый раз обновляет его значение...
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Мда. Есть траблы. После keyup нужно делать что-то типа unbind события, иначе вешается на все поля где жмем кнопки.
Я бы переделал иначе.
1. Взял готовое решение.
2. или если свой велосипед, то обрабатывать каждый инпут.
Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2016
Помог: 0 раз(а)
попробовал поставить $this.unbind() в разных вариациях, не срабатывает. Каждый инпут отдельно обрабатывать не вариант, на практике их может быть больше 10. Готового варианта тоже найти не получилось.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.