jquery - Autocomplete with multiple keywords -
i'm not sure if possible make jquery-ui autocomplete works multiple keywords same result.
here example rather old , couldn't seem work, older jquery files. i'm not familiar jquery , javascript can manage edit existing things.
this have (without adjustments multi-keyword):
<script type="text/javascript"> $(document).ready(function() { newauto(); }); function newauto() { var products = [ <?php foreach($search__1 $search) { echo "{value: '". $search['product_name'] ."'}, ";}?> ]; $("#keyword").autocomplete({ source: function(requestobj, responsefunc) { var matcharry = products.slice(); // copy array var srchterms = $.trim(requestobj.term).split(/\s+/); // each search term, remove non-matches. $.each(srchterms, function(j, term) { var regx = new regexp(term, "i"); matcharry = $.map(matcharry, function(item) { return regx.test(item) ? item : null; }); }); // return match results. responsefunc(matcharry); }, open: function(event, ui) { // function provides no hooks results list, have trust selector, now. var resultslist = $("ul.ui-autocomplete > li.ui-menu-item > a"); var srchterm = $.trim($("#keyword").val()).split(/\s+/).join('|'); // loop through results list , highlight terms. resultslist.each(function() { var jthis = $(this); var regx = new regexp('(' + srchterm + ')', "ig"); var oldtxt = jthis.text(); jthis.html(oldtxt.replace(regx, '<span class="srchhilite">$1</span>')); }); } }); } </script>
if understand ur question correctly, u want show list match multiple word of same sentence.
click here example
<html> <head> <title>testing</title> <link href="css/jquery-ui-1.10.3.custom.css" rel="stylesheet" type="text/css" /> <style type="text/css"> .srchhilite { background: yellow; } </style> <script src="scripts/jquery-1.9.1.min.js" type="text/javascript"></script> <script src="scripts/jquery-ui-1.10.3.custom.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { newauto(); }); function newauto() { var availabletags = ["win day", "win heart of", "win heart of someone"]; alert(availabletags); // alert = win day,win heart of,win heart of $("#tags").autocomplete({ source: function(requestobj, responsefunc) { var matcharry = availabletags.slice(); // copy array var srchterms = $.trim(requestobj.term).split(/\s+/); // each search term, remove non-matches. $.each(srchterms, function(j, term) { var regx = new regexp(term, "i"); matcharry = $.map(matcharry, function(item) { return regx.test(item) ? item : null; }); }); // return match results. responsefunc(matcharry); }, open: function(event, ui) { // function provides no hooks results list, have trust selector, now. var resultslist = $("ul.ui-autocomplete > li.ui-menu-item > a"); var srchterm = $.trim($("#tags").val()).split(/\s+/).join('|'); // loop through results list , highlight terms. resultslist.each(function() { var jthis = $(this); var regx = new regexp('(' + srchterm + ')', "ig"); var oldtxt = jthis.text(); jthis.html(oldtxt.replace(regx, '<span class="srchhilite">$1</span>')); }); } }); } </script> </head> <body> <div> <label for="tags"> multi-word search: </label> <input type="text" id="tags" /> </div> </body> </html>
Comments
Post a Comment