Sujet : Rajout d'un form et de la fonction keyup() à un code jquery

Bonjour à tous,
voilà j'ai un code de recherche par motclef sur un fichier json avec affichage par pagination,
le code fonctionne bien, mais je voudrais lui rajouter un formulaire pour poster le motclef,
et rendre ce code genre (instant search) en lui rajoutant la fonction "keyup()".
NB: j'ai fais quelques tentatives tout seul mais je ne suis pas arrivé, alors
je demande de la'ide, merci.

voici le code:

<!DOCTYPE html>
<html lang="en">
<head>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<meta charset="utf-8" />
<body>
<ul id="list"></ul>

<h2 id="pageHeader"></h2>
<ol id="pageItems"></ol>
<div id="pageButtons"></div>

<script>
var list=[];//déclrer un tableau

$.getJSON('moteur.json', function(json) {
   
   $.each(json,function(i, value){
       
       if(value.description.match(/guide/g)){//on charge le résultat dans le tableau d'objets           
          list.push(value.adresse);  
       }//if
    
    });//each
   
   
//PAGINATION
var pages = paginate(10, list);
function paginate(n, list) {
    return divide(n, list).map(function (items, index) {
        var number = n * index;

        return {
            start: number + 1,
            end: number + items.length,
            items: items
        };
    });
}

var header = document.getElementById("pageHeader");
var items = document.getElementById("pageItems");
var buttons = document.getElementById("pageButtons");

appendChildren(buttons, pages.map(function (page, index) {
    var button = document.createElement("button");
    button.addEventListener("click", display);
    button.innerHTML = index + 1;
    return button;

    function display() {
        displayPage(page);
    }
}));

displayPage(pages[0]);

function displayPage(page) {
    header.innerHTML = "Items " + page.start + " to " + page.end + ":";

    items.start = page.start;

    items.innerHTML = "";

    appendChildren(items, page.items.map(function (item) {
        var li = document.createElement("li");
        li.innerHTML = item;
        return li;
    }));
}

function appendChildren(element, children) {
    children.forEach(function (child) {
        element.appendChild(child);
    });
}

function take(n, list) {
    return list.slice(0, n);
}

function drop(n, list) {
    return list.slice(n);
}

function concat(lists) {
    return Array.prototype.concat.apply(this, lists);
}

function divide(n, list) {
    if (list.length) {
        var head = take(n, list);
        var tail = drop(n, list);
        return concat.call([head], [divide(n, tail)]);
    } else return [];
}
});//getJSON
</script>
</body>
</HTML>