Убрать влияние регистра 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, время: 15:09. |