Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   События формы (https://javascript.ru/forum/dom-window/70175-sobytiya-formy.html)

Роман Андреевич 17.08.2017 05:45

События формы
 
Коллеги доброго времени суток, проблема следующая:

На странице есть input в который пользователь вводит число, какое нибудь не важно. Далее скрипт на сервер отправляет данные.

Теперь собственно вопрос: я ловлю событие input'а :

document.addEventListener('input', function(e) {

    e = e || window.e;
    var target = e.target || window.target;
    
    while (target != this) {
        
        if (target.tagName != 'INPUT') return;
            
        if (target.hasAttribute('data-action')) { 
            
            if (target.getAttribute('data-action') == 'refresh') {

                console.log(target.value);
                
            } else return;
            
        } else return;
        
        target = target.parentNode;
    }


С тем что происходит внутри события все понятно, надеюсь. НО!!! как сделать, что бы в консоле выводилось не каждое value, которое выводит пользователь а последнее. Т.е. я ввожу например 50, сначала в консоле выводится 5 а потом 50, а как сделать что бы выводило сразу 50. Выводить число нужно с задержкой, т.е. пользователь что то ввел, ему дается 2 секунды, а потом выводится в консоль его число. Примерно так.

Rise 17.08.2017 06:24

Цитата:

Сообщение от Роман Андреевич
С тем что происходит внутри события все понятно, надеюсь

Не понятны строки 3 и 4, и наличие цикла, что они делают?

Роман Андреевич 17.08.2017 06:26

e - событие
target - записали в переменную

можно без этих строк, суть не в них

Роман Андреевич 17.08.2017 06:28

Вопрос, в том, как выводить в консоль, только одно число а не каждое, которое ввел пользователь. Т.к. input (событие) срабатывает при каждом изменении поля input, нужно взять только последнее число, через 2 секунды после

j0hnik 17.08.2017 06:34

заменить событие например на
el.addEventListener('blur', function(e) { // потеря фокуса инпутом

Rise 17.08.2017 06:37

Роман Андреевич,
Суть в том что весь код неверен, и с точки зрения кроссбраузерности, и с точки зрения делегирования, почитайте Основы работы с событиями и не пишите больше такой бред.

Rise 17.08.2017 06:39

j0hnik,
Товарищ, событие blur не всплывает так что же ты его на document повесил?

Роман Андреевич 17.08.2017 06:42

Rise, а в чем бред то??????? с точки зрения кроссбраузерности и делегирования в чем проблема то, везде работает!!!!!

Есть проблема и я задал вопрос, если не поняли вопроса так и скажите...

j0hnik 17.08.2017 06:43

Цитата:

Сообщение от Rise (Сообщение 461816)
j0hnik,
Товарищ, событие blur не вплывает так что же ты его на document повесил?

document.addEventListener('focusout', function(e) { // потеря фокуса инпутом

Роман Андреевич 17.08.2017 06:43

А говорить про бред это детский сад, форум для того и создан, одни просят помощи, а другие если могут помогают, по мойму все нормально


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