i am using jQuery autocompleter
for searching.
From my below code my search is happening only on case-sensitive , i want to make case insensitive search.
eg. $array={the king, The king, The man}
And my search keyword is "The" then currently I am getting only the output like {The king, The man}
I am not getting the king
because it is in lower case.
what I want is ,if I write "the" then I should get all the three results.
Please help me to solve my problem
view.php
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$( "#autocomplete" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo base_url().'search/suggestions'?>",
data: { term: $("#autocomplete").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 3,
select: function (a, b) {
$(this).val(b.item.value);
$(".searchform1").submit()
}
});
});
$('#autocomplete').focus();
});
function monkeyPatchAutocomplete() {
// Don't really need to save the old fn,
// but I could chain if I wanted to
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term, "i") ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:Black;'>" + this.term + "</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
$(document).ready(function() {
monkeyPatchAutocomplete();
$("#input1").autocomplete({
// The source option can be an array of terms. In this case, if
// the typed characters appear in any position in a term, then the
// term is included in the autocomplete list.
// The source option can also be a function that performs the search,
// and calls a response function with the matched entries.
source: function(req, responseFn) {
addMessage("search on: '" + req.term + "'<br/>");
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep( wordlist, function(item,index){
//addMessage(" sniffing: '" + item + "'<br/>");
return matcher.test(item);
});
addMessage("Result: " + a.length + " items<br/>");
responseFn( a );
},
select: function(value, data){
if (typeof data == "undefined") {
addMessage('You selected: ' + value + "<br/>");
}else {
addMessage('You selected: ' + data.item.value + "<br/>");
}
}
});
});
</script>
---------------
---------------
<form class="searchform1" action="<?php echo base_url().'search/searchresult/pgn/grid/'?>" method="POST">
<img src="<?php echo base_url()?>css/images/icons/searchicon.png" style="vertical-align:middle;"/>
<input id="autocomplete" value="<?php if(isset($srchvalue)){echo $srchvalue ;} ?>" class="deletable" type="text" name="keywords" style="height: 30px;width: 450px;font-size: 16px;border: 0;border-bottom:solid 4px #dfdfdf;border-top:solid 4px #dfdfdf;" maxlength="70" placeholder=" Search for Title, Author Name, Isbn , Publisher"/>
<input type="submit" value=" Search " class="searchbtn"/>
</form>
Avoid using alot of like operators. Full text search is the way to go. Full txtsearch are case-insensitive by default. So you will have no problem with that.
Here is how to integrate mysql fulltext with codeigniter
Using Match and Against in MySQL and CodeIgniter
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With