Убрать влияние регистра autocompleter.js + Joomla + K2
Здравствуйте. Есть сайт на cms Joomla с компонентом JA K2 Filter. Фильтр подключает autocompleter.js.
Если в поле "адреса" начать вводить улицу, к примеру "Вокза...", то он должен выводить подсказки, что он собственно и делает. Но есть влияние регистра. К примеру если написать "вок..." он уже не найдет, потому что у меня везде с большой буквы слово "Вок...". Я могу в админке все названия заносить заглавными буквами, но вдруг пользователь будет искать маленькими буквами, и у него не будет подсказок. Можно ли сделать чтобы регистр не был чувствителен? Если нужны еще какие-либо данные, с радостью их предоставлю. Отблагодарю за помощь материально. Подсказки выводятся большими буквами, я применил к ним css: text-transform: uppercase; |
Leon2110,
строка 445 файл autocompleter.js data[this.options.postVar] = this.queryValue.toUpperCase(); добавить красное ... а лучше бы сервер отдавал независимо от регистра |
Работает, но похоже только для первой буквы. Если начать "Э" или "э" работает, но если ввести второй символ, хоть большой хоть маленький уже подсказки нет.
В модуле фильтра, эта часть написана так: public function getTextfield($fieldname, $field){ $html = $this->getMultiLevelField($fieldname, $field); if($html) { return $html; } $input = JFactory::getApplication()->input; $selected_values = $input->get($fieldname."_txt",'', 'STRING'); $values = json_decode($field->value); if($values && $this->params->get('auto_complete', 0)){ JHtml::script('com_finder/autocompleter.js', false, true); } $html = ''; foreach ($values as $f) { if($selected_values){ $f->value = $selected_values; } else { //do not use default value for search form $f->value = ''; } $id = "auto_".$this->module->id."_".$fieldname."_txt"; $html .= "\n\t<input type=\"text\" class=\"exfield exgroup{$field->group}\" name=\"{$fieldname}_txt\" id=\"".$id."\" value=\"{$f->value}\" placeholder=\"{$field->name}\" />"; if($this->params->get('auto_complete', 0)==1){ $url = 'index.php?option=com_jak2filter&view=suggestions&m_id='.$this->module->id.'&xf_id='.$field->id.'&tmpl=component'; $html .= '<script type="text/javascript"> var completer_' . $this->module->id . '_' . $fieldname.' = new Autocompleter.Request.JSON( document.id(\''.$id.'\'), \''.$url.'\', {\'minLength\': 1, \'postVar\': \''.$id.'\'} ); '; $html .= '</script>'; } } return $html; } Внизу переменная $html .= '<script..., я поставил там minLength\': 1 - это кол-во символов до подсказки. |
Leon2110,
data[this.options.postVar] = this.queryValue.toLowerCase().replace(/^(.)/, function(a) { return a.toUpperCase() }); |
Большое спасибо, работает)
|
Rise,
:-? |
Цитата:
|
Я временно забирал файл autocompleter.js, посмотрите сейчас)
Есть небольшие ошибки в К2, к примеру я создал материал с адресом "Островского...", на сайте он ищется нормально, после зашел в редактирование материала и поменял адрес на "Костровского..." и теперь в поиск попадают оба этих варианта и ведут они на один и тот же материал. Но уже уже не проблемы js, похоже К2 не стирает предыдущее значение из базы, а добавляет еще одно. Это уже сам покапаюсь как исправить. Похоже нужно еще лезть в базу смотреть, удалил материалы с улицами рогозина и прочие. А они в выпадающий список все равно попадают, и при поиске выдает что нет результатов. Правильно выдает нет, я же удалил их, но в базе где-то остались значения похоже) |
Вообще интересно становится)) Удалил все материалы, а в поиске остались все подсказки всех улиц)
Все, теперь проблема окончательно решена, в админке, в настройках фильтра есть кнопка "обновить индексы", эта функция ставит все на места. |
Leon2110,
изменения бывает кеш не показывает, обнулять нужно, чтоб увидеть изменения. |
Часовой пояс GMT +3, время: 04:11. |