바닐라 자바 스크립트에서 온 스크린 키보드를 만들고 실제 키보드 키가 눌려지면 온 스크린 키보드 키의 색상을 변경하려고합니다. 건반. 여태까지는 그런대로 잘됐다. 문제는 keyup과 keydown을 사용하고 있지만 shift-combos 권한을 얻을 수없는 것입니다.자바 스크립트 키보드, 시프트 + 키 콤보
이는 무슨 일이 일어날 : 보통 키가 파란색으로 색상을 변경 누르면
- .
- Shift 키를 누르면 색상이 빨간색으로 바뀝니다.
- shift-key + a 키를 누르면 모두 빨간색으로 표시되고 해제되면 정상으로 돌아가지만 Shift 키를 계속 누르고 있으면 빨강 색.
문제점 : 시프트 키를 누른 상태에서 일반 키를 누르면 일반 키를 놓으면 두 단추의 색이 모두 사라집니다.
이 지금까지 내 코드입니다 :
farge1 = ' key-pressed';
farge2 = ' shift-pressed';
shift = false;
var klikk = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
if (k === 13) {
document.getElementById('enter').className += (farge1);
} else if (k === 8) {
document.getElementById('backspace').className += (farge1);
} else if (k === 16) {
document.getElementById('shift-right').className += (farge2);
document.getElementById('shift-left').className += (farge2);
shift = true;
}
};
var bokstav = function(e) {
e = e || window.event;
var b = String.fromCharCode(e.which).toLowerCase();
if (shift === true) {
document.getElementById(b).className += (farge2);
} else {
document.getElementById(b).className += (farge1);
}
};
var slipp = function(e) {
e = e || window.event;
var k = e.keyCode || e.which;
var b = String.fromCharCode(e.which).toLowerCase();
document.getElementById('enter').className = ("");
document.getElementById('backspace').className = ("");
document.getElementById(b).className = ("");
if (k !== 16) {
document.getElementById('shift-left').className = ("");
document.getElementById('shift-right').className = ("");
}
shift = false;
};
document.onkeypress = bokstav;
document.onkeydown = klikk;
document.onkeyup = slipp;
나는이 .. 아니 jQuery를 PLS
Thx,하지만 문제는 키패드라고 생각합니다. shift-color가 사라지는 정상적인 키가 릴리스되었습니다. 문법 기술이 부족하여 논리를 둘러싸고 머리를 감쌀 수 없습니다. –
@ HåvardBrynjulfsen 그것은 당신이 keyup을 점검하고 있기 때문입니다! == 16. 당신은 단지 shift color를 다시 바꿔야 만합니다. === 16. – Bic
이것은 많은 도움을주었습니다! –