2016-04-12 2 views
0

Я использую addEventListener для привязки события к узлу. addEventListener добавляет функцию addItem к узлу. Но когда я нажимаю кнопку ввода, функция не работает.Вызов функции при нажатии клавиши с помощью JavaScript

Вот JavaScript:

document.getElementById('add-item').addEventListener('keypress', function (e) { 
    if (e.keyCode == 13) { 
      addItem(); 
    } 
}, false); 

function addItem() { 
    var list = document.querySelector('ul.todo-list'); 
    var newItem = document.getElementById('new-item-text').value; 
    var newListItem = document.createElement('li'); 
    newListItem.className = 'todo-item'; 
    newListItem.innerHTML = newItem + '<span class="remove"></span>'; 
    list.insertBefore(newListItem, document.querySelector('.todo-new')); 

    //1. Empty the Input field once the item 
    document.getElementsByTagName('input')[0].value = ''; 
} 

Вот HTML:

<li class='todo-new'> 
    <input id='new-item-text' type='text'/> 
    <a id='add-item' href='#'>+</a> 
</li> 

С другой стороны, функция работает с click

document.getElementById('add-item').addEventListener('click', addItem, false); 

Я хочу сделать это с помощью JavaScript только не используя библиотеку jQuery.

Отредактировано: Я хочу прикрепить событие к полю ввода.

+0

У вас есть элемент с идентификатором 'add-item'? Этот пункт фокусируется при нажатии кнопки ввода? [Вот пример вашего кода.] (Https://jsfiddle.net/ymcp11ad/) –

+1

Опубликуйте [mcve] в своем ответе – j08691

+0

@MaihanNijat Как сказал j08691, разместите минимальный, полный и проверяемый пример. Я отредактировал свой первый комментарий, чтобы включить пример работы вашего кода. –

ответ

2

Я готов сделать ставку, что элемент add-item не находится в фокусе при нажатии кнопки ввода. Вместо этого попробуйте изменить триггер как поле ввода.

document.getElementById('new-item-text').addEventListener('keypress', function (e) { 
    if (e.keyCode == 13) { 
      addItem(); 
    } 
}, false);