Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2016, 21:17
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2016, 22:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Leon2110,
строка 445 файл autocompleter.js
data[this.options.postVar] = this.queryValue.toUpperCase();

добавить красное ... а лучше бы сервер отдавал независимо от регистра
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2016, 22:45
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2016, 23:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Leon2110,
data[this.options.postVar] = this.queryValue.toLowerCase().replace(/^(.)/, function(a) {
    return a.toUpperCase()
});
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2016, 23:16
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 04.07.2016
Сообщений: 78

Большое спасибо, работает)
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2016, 01:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Rise,
Ответить с цитированием
  #7 (permalink)  
Старый 14.07.2016, 09:22
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 04.07.2016
Сообщений: 78

Сообщение от Rise Посмотреть сообщение
Leon2110, а если так "ЭНгельса"?
Работает теперь по всякому) Регистр перестал влиять) Магия js
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2016, 11:05
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 04.07.2016
Сообщений: 78

Я временно забирал файл autocompleter.js, посмотрите сейчас)
Есть небольшие ошибки в К2, к примеру я создал материал с адресом "Островского...", на сайте он ищется нормально, после зашел в редактирование материала и поменял адрес на "Костровского..." и теперь в поиск попадают оба этих варианта и ведут они на один и тот же материал.
Но уже уже не проблемы js, похоже К2 не стирает предыдущее значение из базы, а добавляет еще одно. Это уже сам покапаюсь как исправить.

Похоже нужно еще лезть в базу смотреть, удалил материалы с улицами рогозина и прочие. А они в выпадающий список все равно попадают, и при поиске выдает что нет результатов. Правильно выдает нет, я же удалил их, но в базе где-то остались значения похоже)

Последний раз редактировалось Leon2110, 14.07.2016 в 11:21.
Ответить с цитированием
  #9 (permalink)  
Старый 14.07.2016, 11:34
Аспирант
Отправить личное сообщение для Leon2110 Посмотреть профиль Найти все сообщения от Leon2110
 
Регистрация: 04.07.2016
Сообщений: 78

Вообще интересно становится)) Удалил все материалы, а в поиске остались все подсказки всех улиц)

Все, теперь проблема окончательно решена, в админке, в настройках фильтра есть кнопка "обновить индексы", эта функция ставит все на места.

Последний раз редактировалось Leon2110, 14.07.2016 в 11:37.
Ответить с цитированием
  #10 (permalink)  
Старый 14.07.2016, 11:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Leon2110,
изменения бывает кеш не показывает, обнулять нужно, чтоб увидеть изменения.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск