Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   событие через атрибут в событие addEventListener (https://javascript.ru/forum/events/62876-sobytie-cherez-atribut-v-sobytie-addeventlistener.html)

innowed 05.05.2016 17:38

событие через атрибут в событие addEventListener
 
https://learn.javascript.ru/keyboard...о-ввода

Вот мы имеем такое поле
<input onkeypress="return false" type="text" id="qwe">

И по каким-то причинам хотим контролировать событие onkeypress через addEventListener
qwe.addEventListener("keypress", function (){return false;});

Так не получилось, но стоит отметить, что alert отрабатывает нормально.
qwe.addEventListener("keypress", function (){alert('ololo')});


В чём здесь проблема? Я вот подумал, что если у нас много инпутов, то прописывать каждому в атрибутах события не очень удобно, а при использовании addEventListener у меня получается только стирать значение после второго нажатия клавиши (при этом в инпут встаёт значение с этой клавиши)
qwe.addEventListener("keypress", function(){this.value=null;});

рони 05.05.2016 18:21

Цитата:

Сообщение от innowed
если у нас много инпутов

id уникально!!!

рони 05.05.2016 18:26

innowed, может атрибут disabled? или так
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<script>

  window.addEventListener('DOMContentLoaded', function() {
       [].forEach.call(document.querySelectorAll('.qwe'), function(item) {
              item.addEventListener('input', function() {
                  item.value=''
              });
          });
    });

</script>
</head>

<body>


<input type="text" class="qwe">
<input type="text" class="qwe">
<input type="text" class="qwe">
</body>
</html>

innowed 06.05.2016 13:37

Цитата:

Сообщение от рони (Сообщение 415752)
innowed, может атрибут disabled? или так
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<script>

  window.addEventListener('DOMContentLoaded', function() {
       [].forEach.call(document.querySelectorAll('.qwe'), function(item) {
              item.addEventListener('input', function() {
                  item.value=''
              });
          });
    });

</script>
</head>

<body>


<input type="text" class="qwe">
<input type="text" class="qwe">
<input type="text" class="qwe">
</body>
</html>

а насколько хуже такой способ добавления на инпуты addEventListener?
for(var i=0; i<querySelectorAll('input').length;i++){
	querySelectorAll('input')[i].addEventListener('input',function(){this.value =''});
	}

Просто таких штук
Код:

[].forEach.call
я как-то пугаюсь

Madzal 06.05.2016 13:48

[].forEach.call(document.querySelectorAll('.qwe'))

тоже самое что
for(var i=0;i<querySelectorAll('.qwe').length;i++)

рони 06.05.2016 14:00

innowed,
forEach удобнее тем что короче и c сохранением значения i ненадо заморачиватся.

innowed 06.05.2016 21:20

Спасибо за ответы!


Часовой пояс GMT +3, время: 03:58.