13.07.2016, 21:17
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Убрать влияние регистра autocompleter.js + Joomla + K2
Здравствуйте. Есть сайт на cms Joomla с компонентом JA K2 Filter. Фильтр подключает autocompleter.js.
Если в поле "адреса" начать вводить улицу, к примеру "Вокза...", то он должен выводить подсказки, что он собственно и делает.
Но есть влияние регистра. К примеру если написать "вок..." он уже не найдет, потому что у меня везде с большой буквы слово "Вок...".
Я могу в админке все названия заносить заглавными буквами, но вдруг пользователь будет искать маленькими буквами, и у него не будет подсказок.
Можно ли сделать чтобы регистр не был чувствителен?
Если нужны еще какие-либо данные, с радостью их предоставлю.
Отблагодарю за помощь материально.
Подсказки выводятся большими буквами, я применил к ним css: text-transform: uppercase;
Последний раз редактировалось Leon2110, 14.07.2016 в 09:16.
|
|
13.07.2016, 22:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Leon2110,
строка 445 файл autocompleter.js
data[this.options.postVar] = this.queryValue.toUpperCase();
добавить красное ... а лучше бы сервер отдавал независимо от регистра
|
|
13.07.2016, 22:45
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Работает, но похоже только для первой буквы. Если начать "Э" или "э" работает, но если ввести второй символ, хоть большой хоть маленький уже подсказки нет.
В модуле фильтра, эта часть написана так:
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, 13.07.2016 в 22:58.
|
|
13.07.2016, 23:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Leon2110,
data[this.options.postVar] = this.queryValue.toLowerCase().replace(/^(.)/, function(a) {
return a.toUpperCase()
});
|
|
13.07.2016, 23:16
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Большое спасибо, работает)
|
|
14.07.2016, 01:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Rise,
|
|
14.07.2016, 09:22
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Сообщение от Rise
|
Leon2110, а если так "ЭНгельса"?
|
Работает теперь по всякому) Регистр перестал влиять) Магия js
|
|
14.07.2016, 11:05
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Я временно забирал файл autocompleter.js, посмотрите сейчас)
Есть небольшие ошибки в К2, к примеру я создал материал с адресом "Островского...", на сайте он ищется нормально, после зашел в редактирование материала и поменял адрес на "Костровского..." и теперь в поиск попадают оба этих варианта и ведут они на один и тот же материал.
Но уже уже не проблемы js, похоже К2 не стирает предыдущее значение из базы, а добавляет еще одно. Это уже сам покапаюсь как исправить.
Похоже нужно еще лезть в базу смотреть, удалил материалы с улицами рогозина и прочие. А они в выпадающий список все равно попадают, и при поиске выдает что нет результатов. Правильно выдает нет, я же удалил их, но в базе где-то остались значения похоже)
Последний раз редактировалось Leon2110, 14.07.2016 в 11:21.
|
|
14.07.2016, 11:34
|
Аспирант
|
|
Регистрация: 04.07.2016
Сообщений: 78
|
|
Вообще интересно становится)) Удалил все материалы, а в поиске остались все подсказки всех улиц)
Все, теперь проблема окончательно решена, в админке, в настройках фильтра есть кнопка "обновить индексы", эта функция ставит все на места.
Последний раз редактировалось Leon2110, 14.07.2016 в 11:37.
|
|
14.07.2016, 11:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
Leon2110,
изменения бывает кеш не показывает, обнулять нужно, чтоб увидеть изменения.
|
|
|
|