Edit in JSFiddle

<input type='text' id="keyword">

<ul id="list">
</ul>
var data = ['apple','apricot','avocado','banana','bilberry','blackberry','blackcurrant','blueberry','boysenberry','cantaloupe','currant','cherry','cherimoya','cloudberry','coconut','cranberry','damson','date','dragonfruit','durian','elderberry','feijoa','fig','goji berry','gooseberry','grape','raisin','grapefruit','guava','huckleberry','jabuticaba','jackfruit','jambul','jujube','juniper berry','kiwi fruit','kumquat','lemon','lime','loquat','lychee','mango','marion berry','melon','cantaloupe','honeydew','watermelon','miracle fruit','mulberry','nectarine','olive','orange','blood orange','clementine','mandarine','tangerine','papaya','passionfruit','peach','pear','persimmon','physalis','plum/prune','pineapple','pomegranate','pomelo','purple mangosteen','quince','raspberry','salmonberry','rambutan','redcurrant','salal berry','salak','satsuma','star fruit','strawberry','tamarillo','tamarind','ugli fruit'];

var keyupStack = [];
var keyword = document.getElementById('keyword');
keyword.addEventListener('keyup', function () {
	keyupStack.push(1);
  
  setTimeout(function () {
  	keyupStack.pop();
    // 最後にkeyupされてから一定時間次の入力がなかったら実行
    if (keyupStack.length === 0) {
      // 部分一致を可能にする(例: .*a.*b.*c.*)
      var buf = '.*' + this.value.replace(/(.)/g, "$1.*");
			var reg = new RegExp(buf);
      
      var filteredLists = data.filter(function (d) {
      	return reg.test(d);
      });
      createRow(filteredLists);
    }
  }.bind(this), 300);
});

var createRow = function (lists) {
	var list = document.getElementById('list');
  list.textContent = null;
  lists.forEach(function (l) {
  	var li = document.createElement('li');
    li.appendChild(document.createTextNode(l));
    list.appendChild(li);
  });
};

// 初期表示
createRow(data);