-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscripts.js
140 lines (139 loc) · 4.95 KB
/
scripts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
let keys = document.querySelectorAll('.keys');
let keysInArray = Array.prototype.slice.call(keys);
let keyUp = document.querySelector('.up');
let forms = document.querySelectorAll('input');
let form;
let formsInArray = Array.prototype.slice.call(forms);
let keyBoard = document.querySelector('.keyboard');
let languages = ['.eng', '.rus'];
let keyAdditionally = document.querySelector('.additionally');
let specialSymbol = document.querySelectorAll('.spec');
specialSymbol = Array.prototype.slice.call(specialSymbol);
// Останавливаемся на сфокусированном поле
formsInArray.forEach(function(item,index,array){
item.addEventListener('focus', function(){
form = item;
});
item.addEventListener('blur', function(){
form = undefined;
})
})
// Устанавливаем запрет на перенос фокуса на клавиатуру
document.querySelector('.keyboard').addEventListener('mousedown',function (e){
if(document.activeElement === form){
e.preventDefault();
}
})
// Функция для прописных и строчных букв
let layoutStatus = false;
keyUp.addEventListener('click',function(){
keysInArray.forEach(function(item){
if(layoutStatus === false){
item.innerHTML = item.innerHTML.toUpperCase();
}
else{
item.innerHTML = item.innerHTML.toLowerCase();
}
})
layoutStatus = !layoutStatus;
})
// Функция ввода символа в поле
keysInArray.forEach(function(item,index,array){
item.addEventListener('click', function(){
if(form){
// Ввод пробела
if(item.getAttribute('class') === "keys wspace"){
form.value += " ";
return;
}
// Удаление символа
else if(item.getAttribute('class') === "keys backspace"){
if(form.value == "") return;
minuSize = form.value.split('');
minuSize.pop();
form.value = minuSize.join('');
return;
}
// Ввод остальных символов
form.value += item.innerHTML;
}
})
})
// Функция и события перемещения клавиатуры
keyBoard.addEventListener('mousedown', mover)
function mover(event){
document.removeEventListener('mousemove', moveFunction);
let xPosition = event.clientX - keyBoard.getBoundingClientRect().left;
let yPosition = event.clientY - keyBoard.getBoundingClientRect().top;
moveTo(event.clientX, event.clientY);
document.addEventListener('mousemove', moveFunction)
function moveFunction(event){
moveTo(event.clientX, event.clientY)
}
function moveTo(x,y){
keyBoard.style.top = y - yPosition + 'px';
keyBoard.style.left = x - xPosition + 'px';
}
keyBoard.onmouseup = function(){
document.removeEventListener('mousemove', moveFunction);
keyBoard.onmouseup = null;
}
}
// Событие смены раскладки и перебор массива с языками
let prev = 0;
let next = 1;
let changeLang = document.querySelector('.lang');
changeLang.addEventListener('click', toggleLang);
function toggleLang(){
if(next < languages.length){
showHide(prev, next);
prev += 1
next += 1;
}
else if((next + 1) > languages.length){
showHide(languages.length - 1, 0);
prev = 0;
next = 1;
}
}
// Функция смены раскладки
function showHide(prev, next){
specialSymbol.forEach(function(item,index,array){
if(item.style.display == 'block'){
item.style.display = 'none';
}
})
let langElements = document.querySelectorAll(languages[prev]);
let langElementsInArr = Array.prototype.slice.call(langElements);
langElementsInArr.forEach(function(item,index,array){
item.style.display = 'none';
})
langElements = document.querySelectorAll(languages[next]);
langElementsInArr = Array.prototype.slice.call(langElements);
langElementsInArr.forEach(function(item,index,array){
item.style.display = 'block';
})
}
// Функция открытия меню специальных символов
let displayStatus = true;
keyAdditionally.addEventListener('click',function(){
toggleLettersAndAddit(displayStatus)
displayStatus = !displayStatus;
});
function toggleLettersAndAddit(displayStatus){
if(displayStatus){
languages.forEach(function(item,index,array){
let letters = document.querySelectorAll(item);
letters = Array.prototype.slice.call(letters);
letters.forEach(function(item,index,array){
item.style.display = 'none';
})
})
specialSymbol.forEach(function(item,index,array){
item.style.display = 'block';
})
}
if(!displayStatus){
toggleLang();
}
}