2016-04-19 3 views
9

Ich versuche eine Tastatur für eine Fremdsprache einzurichten. Ich benutze jQuery, um in fremde Zeichen gedrückte Schlüssel zu konvertieren. Ich verwende:Wie kann ich altKey + i, u, e, n mit jQuery erfassen?

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

    Mein Code für alle diese Werke außer diesen 4:

    • ALT + I
    • ALT + U
    • ALT + E
    • ALT + N

Es funktioniert in Firefox in Ordnung, aber in Chrome und Safari (ich bin mit einem mac) bekomme ich diese Akzentzeichen - ˆ, ¨, ´, ˜ - anstelle des fremden Charakters, der in das Textfeld gehen soll.

Hier ist ein Teil des Codes:

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

Dies funktioniert, wenn e.which65 ist, 68 und 74, aber nicht 73.
Wie kann ich das richtig machen?

+6

FYI, 'return false' ist dasselbe wie' e.preventDefault() 'und' e.stopPropagation() 'zusammen. – VisioN

+0

könntest du ein 'console.log' von' e.which' machen und prüfen, was es zeigt, wenn du [ALT] + [I] tust? Mit diesem [JSFiddle] (https://jsfiddle.net/z2borwez/) funktioniert es auf Chrome für mich (Windows 10) – Jordumus

+0

@Jordumus: Auf Ihrem JSFiddle bekomme ich 18 + 229. Das ist der gleiche Code, den ich für [ ALT] + [u], [ALT] + [e], & [ALT] + [n]. – Travis

Antwort

0

Ich verwende Chrome auf Mac und Ihr jsFiddle-Beispiel https://jsfiddle.net/s0fmpgaj/ funktioniert. Wenn ich ALT + SHIFT + i drücke, wird das von Ihnen definierte spezielle Zeichen zurückgegeben.