Skip to content

Commit 19127c0

Browse files
authored
on printable characters in browser
1 parent c343674 commit 19127c0

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

045-js-printable-char.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## Как в JS определить, ввел ли пользователь печатный символ
2+
3+
`keydown` и `keyup` возникают при нажатии любых клавиш, включая функциональные: Ctrl, Cmd, F1, ...
4+
`keypress` возникает при нажатии _символьной_ клавиши и помогает получить код-символа.
5+
6+
К сожалению, `keypress` срабатывает при нажатии символьных клавиш, дающих непечатный символ: например, ctlr+g дает непечатный символ с кодом 7.
7+
8+
Железобетонный способ проверить, печатный ли символ ввел пользователь, — пробник. Вставляем то, что пользователь ввел, в ДОМ и смотрим ширину элемента:
9+
10+
```js
11+
const .$probe = $('<span></span')
12+
.css({ position: 'fixed', left: '-1000px', bottom: 0 })
13+
.appendTo('body')
14+
15+
$el.on('keypress', () => {
16+
const char = String.fromCharCode(e.charCode)
17+
if (!char || !char.length) return
18+
19+
if ($probe.html(char).width() > 0) {
20+
// handle printable char `char`
21+
}
22+
})
23+
```

0 commit comments

Comments
 (0)