Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2017, 00:11
Аватар для Neor
Новичок на форуме
Отправить личное сообщение для Neor Посмотреть профиль Найти все сообщения от Neor
 
Регистрация: 12.11.2017
Сообщений: 8

Разъясните код
Возникла необходимость что-бы в 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?
Ответить с цитированием
  #2 (permalink)  
Старый 13.11.2017, 01:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти и заменить код скрипта на странице на другой код? smls Общие вопросы Javascript 2 18.07.2016 22:01
javascript обфускатор или как правильно скрыть код syegorius Общие вопросы Javascript 1 19.09.2012 02:58
Не работает код Kendrick Internet Explorer 5 12.09.2012 16:14
Требуется выводить код рекламного блока Adsense из файла JavaScript??? speedflow Элементы интерфейса 0 26.05.2012 15:50
код странно отрабатывает комбинацию клавиш ffx Общие вопросы Javascript 4 20.01.2011 10:58