Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   поиск в русской строке вводя английские символы (https://javascript.ru/forum/jquery/61440-poisk-v-russkojj-stroke-vvodya-anglijjskie-simvoly.html)

git_bind 18.02.2016 13:05

поиск в русской строке вводя английские символы
 
Собственно вопрос заключается в заголовке темы.
Как реализовать поиск по строке с русскими буквами вводя английские символы, т.е. научить понимать что хочет ввести пользователь.

git_bind 19.02.2016 08:37

никто так и не ответит? никто не задавался данным вопросом что ли?

krasovsky 19.02.2016 08:39

Спроси гугл :D

Или к примеру задать соответствие раскладок русская-английская и при поиске мапить

git_bind 19.02.2016 10:52

не отвечает гугл
может как то возможно с помощью словаря?

рони 19.02.2016 11:20

git_bind,
https://yandex.ru/soft/punto/

git_bind 19.02.2016 11:26

Цитата:

Сообщение от рони (Сообщение 408411)

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

destus 19.02.2016 11:58

git_bind,
сделай словарик типо
replacer = {
                "q": "й", "w": "ц", "e": "у", "r": "к", "t": "е", "y": "н", "u": "г",
                "i": "ш", "o": "щ", "p": "з", "[": "х", "]": "ъ", "a": "ф", "s": "ы",
                "d": "в", "f": "а", "g": "п", "h": "р", "j": "о", "k": "л", "l": "д",
                ";": "ж", "'": "э", "z": "я", "x": "ч", "c": "с", "v": "м", "b": "и",
                "n": "т", "m": "ь", ",": "б", ".": "ю", "/": "."
            };


и через Str.replace заменяй.

Vlasenko Fedor 19.02.2016 12:05

<div id="replace">
    <input type="text" class="street edit-state-street" maxlength="50" />
</div>
<script>
replace.oninput = function (e) {
    var el = e ? e.target : window.event.srcElement;
    if (el.tagName != "INPUT") return;
    var replacer = {
        "q": "й",
        "w": "ц",
        "e": "у",
        "r": "к",
        "t": "е",
        "y": "н",
        "u": "г",
        "i": "ш",
        "o": "щ",
        "p": "з",
        "[": "х",
        "]": "ъ",
        "a": "ф",
        "s": "ы",
        "d": "в",
        "f": "а",
        "g": "п",
        "h": "р",
        "j": "о",
        "k": "л",
        "l": "д",
        ";": "ж",
        "'": "э",
        "z": "я",
        "x": "ч",
        "c": "с",
        "v": "м",
        "b": "и",
        "n": "т",
        "m": "ь",
        ",": "б",
        ".": "ю",
        "/": "."
    };
    var str = el.value;
    
    el.value = str.replace(/[A-z/,.;\'\]\[]/g, function (x) {
       return x == x.toLowerCase() ? replacer[x] : replacer[x.toLowerCase()].toUpperCase();
    });
};
</script>

git_bind 19.02.2016 13:33

спасибо больше! реально полезный код. но у меня теперь возникает вопрос, как быть с английскими словами? объясню наглядно для чего вся эта затея.
имеется таблица, в ней записаны значения:

|имя слоя | источник|
|геоданные 2015 |http://localhost/.....|
|cosmo_tile_2015 |http://localhost/.....|
ну и много другое(порядка 200 шт.)
сейчас поиск реализован с помощью jquery.filtertable
поиск устраивает, но увидев на вышеупомянутом сайте функционал поисковой строки, захотел подобное реализовать.
т.е. вводя "геодан" не сменив раскладку фильтровалось так же, как и вводя на русском "геодан". ну и аналогично с "cosmo"

destus 19.02.2016 13:47

git_bind,
фильтровать сначала по одному, потом попытаться по-другому, если для первого случая неудачно. Допустим вводим utjlfyyst (геоданные) и фильтруем сначала для первого случая, потом для второго. Я не думаю, что в таблице будут записи типа 'utjlfyyst...'


Часовой пояс GMT +3, время: 05:46.