Funktioniert wie ein Charme! und auf Chrome, Firefox, IE, und Edge-auch;) https://jsfiddle.net/55g5utsk/2/
var a=[];
function keyName(p){
var cases = {16:'Shift',17:'CTRL',18:'Alt'};
return cases[p] ? cases[p] : 'KeyCode: '+p;
}
function keyPosition(p){
var cases = {1:'Left',2:'Right'};
return cases[p] ? cases[p]+' ' : '';
}
$('input').on('keydown',function(e){
a.push(keyPosition(e.originalEvent.location)+keyName(e.keyCode));
})
$('input').on('keyup',function(){
var c='';
var removeDuplicates = [];
$.each(a, function(i, el){
if ($.inArray(el, removeDuplicates) === -1) {
removeDuplicates.push(el);
c=c+(el)+' + ';
}
});
a=[];
alert(c.slice(0, -3))
});
Folgen, eine Version mit dem Click-Ereignis http://jsfiddle.net/2pL0tzx9/
var a=[];
function keyName(p){
var cases = {16:'Shift',17:'CTRL',18:'Alt'};
return cases[p] ? cases[p] : '';
}
function keyPosition(p){
var cases = {1:'Left',2:'Right'};
return cases[p] ? cases[p]+' ' : '';
}
$(document).on('keydown',function(e){
a.push(keyPosition(e.originalEvent.location)+keyName(e.keyCode));
})
$('#my_id').on('click',function(){
var c='';
var removeDuplicates = [];
a =a.filter(function(v){return v!==''});
$.each(a, function(i, el){
if ($.inArray(el, removeDuplicates) === -1){
removeDuplicates.push(el);
c=c+(el)+' + ';
}
});
if (c) alert(c.slice(0, -3));
a=[];
});
@JeremyBanks Sie suchen [ KeyboardEvent Location] (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/location) * ([siehe Tabellenunterstützung] (http://caniuse.com/#feat=keyboardevent-location))) *. In jQuery müssen Sie mit jq event wrapper "event.originalEvent.location" verwenden.Dann ist die Logik, die beim Klick implementiert wird, nicht so schwer, denke ich, setze einfach ein Flag/Objekt auf Keydown/Keyup Ereignisse und überprüfe es beim Klick. Problem könnte sein, den 'altGr'-Schlüssel zu handhaben, der zu einem inkonsistenten Ergebnis führen kann. Wenn ich Zeit habe, werde ich eine Antwort geben, später ... –