2016-04-12 7 views
0

私はaddEventListenerを使用してイベントをノードにバインドしています。 addEventListenerは、ノードにaddItemの機能を追加します。しかし、私がenterを押すと、機能は実行されていません。ここでJavaScriptでEnterキーを押したときに関数を呼び出す

は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> 

一方の機能は、私はJavaScriptでこれをやりたいclick

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

で実行されますjQueryライブラリを使用しないでください。

編集: 入力欄にイベントを添付します。

+0

あなたは 'add-item' IDを持つ要素を持っていますか? Enterを押すと、その項目はフォーカスされますか? [あなたのコードの実例です] –

+1

あなたの質問に[mcve]を投稿してください。 – j08691

+0

@MaihanNijat j08691が言ったように、最小限で完全で検証可能な例を投稿してください。最初のコメントを編集して、コードの動作例を含めました。 –

答えて

2

Enterキーを押したときにadd-item要素にフォーカスがないことを賭けても構いません。代わりに、トリガーを入力フィールドに変更してみてください。

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