Разъясните код
Возникла необходимость что-бы в 3 input-а вводились только цифры. После недолгих изысканий нашел код
document.getElementsByTagName('input')[0].onkeypress = function(a) {
a = a || event;
if (a.ctrlKey || a.altKey || a.metaKey) return;
var chr = getChar(a);
// с null надо осторожно в неравенствах, т.к. например null >= '0' => true!
// на всякий случай лучше вынести проверку chr == null отдельно
if (chr == null) return;
if (chr < '0' || chr > '9') {
return false;
}
}
function getChar(event) {
if (event.which == null) {
if (event.keyCode < 32) return null;
return String.fromCharCode(event.keyCode) // IE
}
if (event.which != 0 && event.charCode != 0) {
if (event.which < 32) return null;
return String.fromCharCode(event.which) // остальные
}
return null; // специальная клавиша
}
Для одного input-а код работает идеально, а для 3-х input-ов ни в какую. (копипастит в данном случае считаю идиотизмом :))Поэтому прошу разъяснить как в данном случае работает первая функция(1-ая строка). Как этот код адаптировать для 3-х input-ов с минимальными жертвами, и что передается в аргумент a, и почему не получается дать название функции и выводить туда аргументы через this? |
Neor,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
window.addEventListener("DOMContentLoaded", function() {
var form = document.querySelector("form");
function getChar(event) {
if (event.which == null) {
if (event.keyCode < 32) return null;
return String.fromCharCode(event.keyCode)
}
if (event.which != 0 && event.charCode != 0) {
if (event.which < 32) return null;
return String.fromCharCode(event.which)
}
return null
}
form.addEventListener("keypress", function(event) {
var el = event.target;
if (el.classList && el.classList.contains("item")) {
var chr = getChar(event);
chr !== null && chr >= '0' && chr <= '9' || event.preventDefault()
}
})
});
</script>
</head>
<body>
<form action="http://">
<input type="text" class="item">
<input type="text" class="item">
<input type="text" class="item">
</form>
</body>
</html>
|
| Часовой пояс GMT +3, время: 08:33. |