2013-03-09 5 views
5

Ich benutze jQuery autocompleter für die Suche.wie Groß-und Kleinschreibung zu machen Suche

Von meinem unteren Code meine Suche geschieht nur bei Groß- und Kleinschreibung, ich möchte case insensitive Suche machen. z. $array={the king, The king, The man}

Und meine Suche Schlüsselwort ist „Die“ dann zur Zeit nur die Ausgabe wie {The king, The man} ich nicht the king bin immer, weil es in der unteren Fall erhalte ich.

was ich will ist, wenn ich "das" schreibe, dann sollte ich alle drei Ergebnisse bekommen.

Bitte helfen Sie mir mein 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("&nbsp;&nbsp;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="&nbsp;&nbsp;Search&nbsp;&nbsp;" class="searchbtn"/> 
     </form> 
+0

Bitte beachten Sie: 'Erfolg()' ist veraltet. Verwenden Sie stattdessen 'done()'. – itachi

Antwort

4

Vermeiden Sie eine Menge wie Betreiber zu lösen. Volltextsuche ist der Weg zu gehen. Vollständige txtsearch-Dateien werden standardmäßig nicht berücksichtigt. Du wirst damit kein Problem haben.

Hier ist, wie mysql Volltext mit codeigniter

Using Match and Against in MySQL and CodeIgniter

+0

http://stackoverflow.com/questions/2876789/case-insensitive-for-sql-like-wildcard-statement –

+0

Bitte ändern Sie meinen Code und fügen Sie Ihren Logikcode hinzu. Dann lass es uns testen –

+0

Ist das eine nette oder schwierig zu integrieren solche Abfrage mit Codeigniter? –

0

Haben Sie absichtlich verwenden, um einen Fall sensitive Sortierung auf dem Tisch zu integrieren? Die Umstellung auf eine Groß-/Kleinschreibung ohne Berücksichtigung der Groß-/Kleinschreibung würde Ihr Problem lösen. Eine andere Lösung wäre, Ihre Saite im unteren (oder oberen) Fall abzustimmen. Etwas wie dieses:

$ this-> db-> or_like ('LOWER (auth_lastname)', strtolower ($ keyword));

Auch Volltextsuche nicht möglich ist, wenn Sie InnoDB verwenden als Speicher-Engine in MySQL

Verwandte Themen