NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
katrincsak
Člen
Avatar
katrincsak:23.9.2015 22:34

Zdravím,

předem bych rád upozornil že js/jq nijak neovládám a zatím se tomu snažím vyhýbat pakliže to není zcela nutné. Důvod je, že se hlavně zaměřuji na php a js/jq budu brát jakmile budu mít prostor.

Zdroj: https://jqueryui.com/autocomplete/

Vše funguje jak má, ale rád bych aby vyhledávané slovo bez diakritiky bylo hledané i jako s diakritikou.. To znamená např. že když napíšu písmeno "u" tak mi vyjedou slova i s pímenem dlouhým "ú".
Jedná se o psč/města a tak když zadám např usti nad labem, tak aby bylo to samé jako Ústí nad Labem..

<?php
        foreach($psc as $adresa)
        {
                $pole = "'".$adresa['obec']." - ".$adresa['psc']."',".$pole;
        }
?>

<script type="text/javascript">
$(function() {
        var availableTags = [<?= $pole ?>];
        $("#naseptavac").autocomplete({
            source: availableTags,
            delay: 0
        });
    });
</script>

Bonusová otázka: Jak bych mohl lépe ten foreach do toho vložit? Nezkoušel jsem vkládat přímo pole (i když se to tak jmenuje) předpokládám, že by skočila chyba něco jako array.

Děkuji za rady ;-)

Editováno 23.9.2015 22:35
 
Odpovědět
23.9.2015 22:34
Avatar
katrincsak
Člen
Avatar
katrincsak:23.9.2015 23:01

Tak zde jsem našel řešení ... ach ta moje angličtina :)

-> http://jqueryui.com/autocomplete/#…

část, která to řeší... doplnil jsem jen pár písmenek.

<?php
        foreach($psc as $adresa)
        {
                $pole = "'".$adresa['obec']." - ".$adresa['psc']."',".$pole;
        }
?>
<script type="text/javascript">
  $(function() {
    var names = [<?= $pole ?>];

    var accentMap = {
      "á": "a",
          "ö": "o",
          "ú": "u",
          "í":"i",
          "Í":"I",
          "Ú":"U"
    };
    var normalize = function( term ) {
      var ret = "";
      for ( var i = 0; i < term.length; i++ ) {
        ret += accentMap[ term.charAt(i) ] || term.charAt(i);
      }
      return ret;
    };

    $( "#naseptavac" ).autocomplete({
      source: function( request, response ) {
        var matcher = new RegExp( $.ui.autocomplete.escapeRegex( request.term ), "i" );
        response( $.grep( names, function( value ) {
          value = value.label || value.value || value;
          return matcher.test( value ) || matcher.test( normalize( value ) );
        }) );
      }
    });
  });
  </script>
 
Nahoru Odpovědět
23.9.2015 23:01
Avatar
katrincsak
Člen
Avatar
katrincsak:24.9.2015 19:23

Dokázal by mi někdo udělat z výše toho posledního udělaného příkladu i cachování ?

Aktuálně ukládám data do session (zjišťuji jestli uživatel session má, nebo nemá a případně data nahraju). Zjišťuji ale, že 1 uložení = 128KB což je docela dost na každého uživatele. Obzvlášť když wedos umožňuje 32MB session limit. Ještě nevím co se stane po přečerpání limitu a již čekám na odpověď emailem..

Jedná se o 3500 dat, které nechci pravidelně načítat z MySQL.

Děkuji ;-)

 
Nahoru Odpovědět
24.9.2015 19:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.