2016-04-19 32 views
9

Yabancı dil için bir klavye oluşturmaya çalışıyorum. Yabancı karakterlere basılan tuşları dönüştürmek için jQuery kullanıyorum. Ben kullanıyorum:jQuery ile nasıl altKey + i, u, e, n'yi yakalarım?

  • A - Z
  • ALT + A - Z
  • SHIFT + A - Z
  • ALT + SHIFT + A - Z

    • ALT + Ben
    • ALT + U
    • ALT + E
    • : My kodunun bu 4 hariç tüm bunlar için çalışır

    • ALT + N

O Firefox'ta çalışıyor, ancak Chrome ve Safari Bunları aksan işaretleri olsun (Ben bir mac kullanıyorum) - ˆ, ¨, ´, ˜ - textarea'ya gitmesi gereken yabancı karakter yerine.

İşte kodun bir kısmı:

function type(e, char, textArea) { 
    e.preventDefault(); 
    var start = textArea[0].selectionStart; 
    var end = textArea[0].selectionEnd; 
    var len = textArea.val().length; 
    var newPos = start + char.length; 
    textArea.val(textArea.val().substring(0, start) + char + textArea.val().substring(end, len)); 
    textArea[0].setSelectionRange(newPos, newPos); 
} 
$('textarea').keydown(function(e) { 
     var textArea = $(this); 
     if (e.which == 65 && e.altKey) {type(e, 'अ', textArea);return false;} 
     if (e.which == 68 && e.altKey) {type(e, 'ड', textArea);return false;} 
     if (e.which == 73 && e.altKey) {type(e, 'इ', textArea);return false;} 
     if (e.which == 74 && e.altKey) {type(e, 'ज्ञ', textArea);return false;} 
}); 

e.which65, 68 ve 74 değil 73 olduğunda bu çalışır.
Bunu doğru şekilde nasıl sağlayabilirim?

+6

FYI, 'false döndür ', birlikte e.preventDefault() ve e.stopPropagation()' ile aynıdır. – VisioN

+0

, "e.which" adlı bir 'console.log'unu yapabilir ve [ALT] + [I] yaparken ne yaptığını kontrol edebilir misiniz? Bu [JSFiddle] kullanarak (https://jsfiddle.net/z2borwez/), benim için krom çalışır (Windows 10) – Jordumus

+0

@Jordumus: JSFiddle üzerinde, 18 + 229 olsun. ALT] + [u], [ALT] + [e] ve [ALT] + [n]. – Travis

cevap

0

Mac'te Chrome kullanıyorum ve jsFiddle örneğiniz https://jsfiddle.net/s0fmpgaj/ çalışıyor. ALT + SHIFT + i düğmesine bastığımda, tanımladığınız özel karakterleri döndürür.