2013-04-05 27 views
5

Tôi có chọn thẻ trong đó có tùy chọn ở Gruzia:tìm kiếm tùy chọn từ bàn phím khi khác nhau mã hóa ký tự

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

Khi tôi mở rộng chọn thẻ và bấm "მ" trên bàn phím, tôi muốn lựa chọn bắt đầu vào "tìm kiếm მ ". Mọi thứ hoạt động tốt theo mặc định khi các ký tự được viết bằng tiếng Anh. Tôi không có ý tưởng làm thế nào để sửa chữa nó, bạn có thể đề nghị bất cứ điều gì?

+0

bạn có thể cung cấp mã js bạn đã sử dụng không? –

+2

Điều này có thể phụ thuộc vào trình duyệt bạn đang sử dụng. Điều duy nhất tôi có thể nghĩ về những gì bạn có thể làm là đảm bảo rằng bạn đã khai báo ký tự được đặt đúng trong tiêu đề HTTP. – RoToRa

+0

bạn có thể sửa đổi bộ ký tự html ngay từ đầu sang ngôn ngữ mong muốn và thử lại sự kiện nhấn phím – beaver

Trả lời

1

tôi không có ký tự Gruzia trên bàn phím của tôi, nhưng ít nhất tôi biết Nga:

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; 
     } 
    } 
}); 

Và một ví dụ làm việc: http://jsfiddle.net/wdSQv/1/ (được thử nghiệm trong Firefox 20)

+0

không được gọi. hoạt động không có js nếu ngôn ngữ Nga được đặt trong thanh ngôn ngữ. Tôi muốn làm việc với ngôn ngữ tiếng Anh được đặt trong thanh ngôn ngữ – karaxuna

+0

@karaxuna, sau đó bạn sẽ phải lập bản đồ tất cả các ký tự từ bàn phím, tôi đã cập nhật câu trả lời của mình – micnic

+0

+1 cho ý tưởng, nhưng nếu bạn đặt điểm dừng ở đó, bạn sẽ thấy không có sự kiện nhấn phím nào sẽ được gọi là – karaxuna

Các vấn đề liên quan