Skip to content

Commit 70ecf85

Browse files
committed
fix input handling on mobile (see #18)
1 parent 693da8e commit 70ecf85

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

src/Resources/public/js/backend.js

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,15 @@
2424
input._tagsContainer = tags;
2525
input._tagsSelect = el;
2626

27-
input.addEventListener('keydown', (e)=>{
28-
29-
const ENTER_KEY = 13;
30-
const COMMA_KEY = 188;
31-
const TAB_KEY = 9;
32-
33-
if( ![ENTER_KEY, COMMA_KEY, TAB_KEY].includes(e.keyCode) ) {
34-
return;
35-
}
36-
37-
if( [TAB_KEY, COMMA_KEY].includes(e.keyCode) ) {
38-
e.preventDefault();
39-
}
27+
const handleInput = ()=>{
4028

4129
const results = input._tagsContainer.querySelector('ul.chzn-results');
4230
let alreadyExists = Boolean(results.querySelector('li.highlighted'));
4331

4432
if( !alreadyExists ) {
4533
alreadyExists = [...input._tagsSelect.querySelectorAll('option')].some(option => option.value === input.value);
46-
4734
}
35+
4836
if( !alreadyExists ) {
4937

5038
// prevent user from adding new tag if prohibited
@@ -72,6 +60,34 @@
7260

7361
initTagsSelector(input._tagsSelect);
7462
}
63+
};
64+
65+
input.addEventListener('input', (e)=>{
66+
67+
if( e.data !== ',' ) {
68+
return;
69+
}
70+
71+
input.value = input.value.slice(0, -1);
72+
handleInput();
73+
});
74+
75+
input.addEventListener('keydown', (e)=>{
76+
77+
const ENTER_KEY = 13;
78+
const COMMA_KEY = 188;
79+
const COMMA_KEY_NUMPAD = 108;
80+
const TAB_KEY = 9;
81+
82+
if( ![ENTER_KEY, COMMA_KEY, COMMA_KEY_NUMPAD, TAB_KEY].includes(e.keyCode) ) {
83+
return;
84+
}
85+
86+
if( [TAB_KEY, COMMA_KEY, COMMA_KEY_NUMPAD].includes(e.keyCode) ) {
87+
e.preventDefault();
88+
}
89+
90+
handleInput();
7591
});
7692
};
7793

0 commit comments

Comments
 (0)