2013-04-05 4 views
5

mam wybrać tag, który posiada opcje w gruziński:szukają opcja z klawiaturą gdy inny kodowanie znaków

<select> 
    <option value="1"> პირველი </option> 
    <option value="2"> მეორე </option> 
    <option value="3"> მესამე </option> 
</select> 

Kiedy poszerzyć wybierz znacznik i naciśnij „მ” na klawiaturze, chcę szukać opcji, która rozpoczyna się na " მ ". Wszystko działa poprawnie, gdy znaki są napisane w języku angielskim. Nie mam pojęcia, jak to naprawić, czy możesz coś zaproponować?

+0

Czy możesz podać kod js, którego użyłeś? –

+2

To prawdopodobnie zależy od przeglądarki, z której korzystasz. Jedyne co mogę zrobić, to upewnić się, że zadeklarowałeś poprawne ustawienie znaków w nagłówku HTTP. – RoToRa

+0

możesz modyfikować zestaw znaków html na początku do żądanego języka i spróbuj ponownie – beaver

Odpowiedz

1

nie mam gruzińskie znaki na klawiaturze, ale przynajmniej wiem, rosyjski:

HTML:

<select id="select"> 
    <option value="0">Ноль</option> 
    <option value="1">Один</option> 
    <option value="2">Два</option> 
    <option value="3">Три</option> 
    <option value="4">Четыре</option> 
    <option value="5">Пять</option> 
    <option value="6">Шесть</option> 
    <option value="7">Семь</option> 
    <option value="8">Восемь</option> 
    <option value="9">Девять</option> 
</select> 

JS:

document.getElementById('select').addEventListener('keypress', function (event) { 
    var length = this.options.length; 
    var char = String.fromCharCode(event.which); 
    var keys = { 
     a: 'ф', 
     b: 'и', 
     c: 'с', 
     d: 'в', 
     e: 'у', 
     f: 'а', 
     g: 'п', 
     h: 'р', 
     i: 'ш', 
     j: 'о', 
     k: 'л', 
     l: 'д', 
     m: 'ь', 
     n: 'т', 
     o: 'щ', 
     p: 'з', 
     q: 'й', 
     r: 'к', 
     s: 'ы', 
     t: 'е', 
     u: 'г', 
     v: 'м', 
     w: 'ц', 
     x: 'ч', 
     y: 'н', 
     z: 'я', 
     '[': 'х', 
     ']': 'ъ', 
     ';': 'ж', 
     '\'': 'э', 
     ',': 'б', 
     '.': 'ю', 
     '/': '.', 
    }; 
    var key = keys[char]; 
    for (var i = 0; i < length; i++) { 
     if (this.options[i].innerHTML.charAt(0).toLowerCase() === key) { 
      this.selectedIndex = i; 
      break; 
     } 
    } 
}); 

oraz pracy przykład: http://jsfiddle.net/wdSQv/1/ (testowane w Firefoksie 20)

+0

Zdarzenie keypress nie zostanie wywołane. działa bez js, jeśli język rosyjski ustawiony jest na pasku języka. Chcę pracować z językiem angielskim ustawionym w pasku języka – karaxuna

+0

@karaxuna, wtedy będziesz musiał mapować wszystkie postacie z klawiatury, zaktualizowałem moją odpowiedź na – micnic

+0

+1, ale jeśli umieścisz tam punkt przerwania, zobaczysz to żadne zdarzenie keypress nie będzie nazywane – karaxuna