Autocomplete With Google Suggest

0 Comments

(close)
 
<div id="suggest">
    <input id="search" value="" data-search-in="web" />
    <br />
    Did You Mean ??
    <ul id="result">
        <li>text</li>
        <li>text</li>
        <li>text</li>
        <li>text</li>
    </ul>
</div>
 
#suggest{
    margin: 3em auto;
    width: 250px;
    background-color: #cfc;
    padding: 1.5em 2em;
    border: 5px double #6f6;
    border-radius: 15px;
}
 
function getSuggest(event){
    var script = document.getElementById('google-suggest');
    if(script)
        script.parentNode.removeChild(script);
    
    var val = event.target.value,
            script = document.createElement('script'),
            url = '//clients1.google.com/complete/search';
    url = location.protocol + url;
    
    // last edit we will add more from google services
    var searchIn = event.target.getAttribute('data-search-in') || 'web',
    
    services = {
        youtube: { client: 'youtube', ds: 'yt' },
        books: { client: 'books', ds: 'bo' },
        products: { client: 'products-cc', ds: 'sh' },
        news: { client: 'news-cc', ds: 'n' },
        images: { client: 'img', ds: 'i' },
        web: { client: 'psy', ds: '' },
        recipes: { client: 'psy', ds: 'r' }
    },
    serves = services[searchIn];
    
    url += '?q=' +val+ '&client=' +serves.client+ '&ds=' +serves.ds+ '&nolables=t';
    url += '&callback=printSuggest';
    
    
    script.id="google-suggest";
    script.type= 'text/javascript';
    script.src = url;
    document.body.appendChild(script);
}
 
window.printSuggest = function (json){
    var resultText ='';
    json = json[1];
    for (var word in json){
        var suggest = json[word][0];
        if(suggest){
            resultText += '<li>'+suggest+'</li>';
        }
    }
    document.getElementById('result').innerHTML = resultText;
}
// now we will to add event listener instead of call function
document.getElementById('search').addEventListener('keyup', getSuggest,false);

5x 10x 15x 20x

Comment

Description