Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2025, 07:24
Новичок на форуме
Отправить личное сообщение для zap77 Посмотреть профиль Найти все сообщения от zap77
 
Регистрация: 02.02.2024
Сообщений: 3

Как сделать поиск по русски при вводе английских букв?
Привет.
Есть поиск по сайту - вот. Реализован с помощью библиотеки jQuery-autoComplete. Суть в том, что когда вводишь части подстрок, совпадающих с указанными в настройках, то появляются подсказки. Вот так:
https://javascript.ru/forum/attachme...d=174063045 3
Активирются эти подсказки примерно так:
$('#top-search').autoComplete({
    minChars: 2,
    source: function(term, suggest) {
        term = term.toLowerCase();
        var choices = [
            ...
            'Ремонт блока питания',
            'Ремонт компьютера',
            'Ремонт материнской платы',
            'Ремонт нетбука',
            'Ремонт ноутбука',
            ...
        ];
        var matches = [];
        for (i = 0; i < choices.length; i++)
            if (~choices[i].toLowerCase().indexOf(term)) matches.push(choices[i]);
        suggest(matches);
    }
});

Иногда раскладка клавиатуры путается и думаешь, что пишешь по-русски, но на самом деле по-английски. В яндексе когда так делаешь, то он сам исправляет написанное. Можно как-то и здесь такое на javascript сделать? Есть какие-то скрипты для этого на javascript? — Чтобы при ошибочном вводе с другой раскладкой скрипт понимал бы ошибочность и переводил на русский.
Изображения:
Тип файла: png 000.png (16.4 Кб, 2 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2025, 08:42
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,242

Сообщение от zap77
Можно как-то и здесь такое на javascript сделать? Есть какие-то скрипты для этого на javascript?
Их навалом!

Вот например такой...
function translit(word){
	var answer = '';
	var converter = {
		'а': 'a',    'б': 'b',    'в': 'v',    'г': 'g',    'д': 'd',
		'е': 'e',    'ё': 'e',    'ж': 'zh',   'з': 'z',    'и': 'i',
		'й': 'y',    'к': 'k',    'л': 'l',    'м': 'm',    'н': 'n',
		'о': 'o',    'п': 'p',    'р': 'r',    'с': 's',    'т': 't',
		'у': 'u',    'ф': 'f',    'х': 'h',    'ц': 'c',    'ч': 'ch',
		'ш': 'sh',   'щ': 'sch',  'ь': '',     'ы': 'y',    'ъ': '',
		'э': 'e',    'ю': 'yu',   'я': 'ya',
 
		'А': 'A',    'Б': 'B',    'В': 'V',    'Г': 'G',    'Д': 'D',
		'Е': 'E',    'Ё': 'E',    'Ж': 'Zh',   'З': 'Z',    'И': 'I',
		'Й': 'Y',    'К': 'K',    'Л': 'L',    'М': 'M',    'Н': 'N',
		'О': 'O',    'П': 'P',    'Р': 'R',    'С': 'S',    'Т': 'T',
		'У': 'U',    'Ф': 'F',    'Х': 'H',    'Ц': 'C',    'Ч': 'Ch',
		'Ш': 'Sh',   'Щ': 'Sch',  'Ь': '',     'Ы': 'Y',    'Ъ': '',
		'Э': 'E',    'Ю': 'Yu',   'Я': 'Ya'
	};
 
	for (var i = 0; i < word.length; ++i ) {
		if (converter[word[i]] == undefined){
			answer += word[i];
		} else {
			answer += converter[word[i]];
		}
	}
 
	return answer;
}


Способ применения.

$('#submit').click(function(){
	$('#input').val(function(i, val){
		return translit(val);
	});
 
	return false;
});


Источник https://snipp.ru/js/translit-js
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2025, 13:39
Новичок на форуме
Отправить личное сообщение для zap77 Посмотреть профиль Найти все сообщения от zap77
 
Регистрация: 02.02.2024
Сообщений: 3

Сообщение от ksa Посмотреть сообщение
Их навалом!

Вот например такой...
Ага. Т. е. надо взять и сопоставить все буквы с английской раскладкой русским буквам и передать полученное значение в функцию. Т. е. если человек вместо «ремонт» набирает это слово на английской раскладке «htvjyn», то берем его ввод, сопоставляем... Кажется, так получаться должно.

Хм... А если у него раскладка на клавиатуре немецкая или другого языка какого? Как определить тогда, какую таблицу соответствия выбирать?
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2025, 14:26
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,242

Сообщение от zap77
А если у него раскладка на клавиатуре немецкая или другого языка какого?
Делай другую таблицу соответствий, по примеру той, и будет тебе счастие.
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2025, 14:29
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,242

zap77, вот у нас на форуме есть соответствующая тема https://javascript.ru/forum/jquery/3...raskladki.html
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2025, 14:33
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,242

Вот есть модуль для решения таких проблем...
https://github.com/alexanderkx/ai-switcher-translit
Ответить с цитированием
  #7 (permalink)  
Старый 28.02.2025, 09:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,760

Сообщение от ksa Посмотреть сообщение
Вот есть модуль для решения таких проблем...
https://github.com/alexanderkx/ai-switcher-translit
Это все не то. Пользователь ведь переключает раскладку обычными системными способами. И из браузера (js) никак не определить, какая раскладка сейчас включена.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтобы при наведении мыши на 1-ин елемент 2-ой становился темнне JS nathan111777 Общие вопросы Javascript 8 15.05.2019 15:41
Как сделать чтобы по картинке при нажатии на определенное место вылезала информация о KazZato Общие вопросы Javascript 1 16.05.2018 08:58
Как сделать? Выделение текста в div при нажатии на ссылку Olena Элементы интерфейса 3 01.03.2015 19:01
Как сделать, чтобы при вводе числа в поле добавлялись разделители групп разрядов? Hurray Элементы интерфейса 13 18.02.2015 14:07
как сделать что бы при открытии страницы сразу открылось большое фото oksanaweb Общие вопросы Javascript 1 05.06.2013 02:17