pisałem sobie prosty serwis i w jednym miejscu stwierdziłem że całkiem fajnie sprawdziłyby się dynamiczne podpowiedzi a'la google. Skorzystałem więc z gotowego rozwiązania opisanego na tym blogu: http://www.gogolkiewicz.pl/dynamiczne-podp...-w-stylu-google. Lekko to zmodyfikowałem żeby pasowało do postgresa i mojej bazy i udało mi się zaimplementować. Jednak mam teraz ogromny problem - rekordów które użytkownik może tworzyć za pomocą strony będzie dość zróżnicowana ilość - od 1 do około 100, zatem najlepiej byłoby to zrobić w taki sposób, aby za pomocą buttona dodawać kolejne pola tekstowe z możliwością wpisania kolejnych danych. Czy da się w jakiś łatwy sposób za pomocą JS 'klonować' takie pola? Chodzi mi o to, żeby pozostałe nie różniły się niczym od tego jednego, poza polem name (dane przesyłam dalej POSTem więc potrzebuję je jakoś rozróżniać). Wiem jak dodawać dynamicznie zwykłe pola do formularza, ale ten kod zdecydowanie mnie przerósł.
Skrypty:
<script type="text/javascript"> <!-- $(document).ready(function(){ $("#search").live('keyup', function(){ var search = $("#search").val(); if(search == '') { $("#results").hide(); } else { $.get('podpowiedzi.php?action=search&search=' + search, function(data){ $("#results").html(data); $("#results").show(); }); } }); $(".result-list").live('click', function(){ $("#search").val($(this).html()); $("#results").hide(); }); $("#close").live('click', function(){ $("#results").hide(); }); }); --> <style type="text/css"> input#search { font: 12px courier; padding: 10px; border: 1px solid black; width: 200px; } div#results { margin-top: -3px; border: 1px solid gray; width: 220px; } a.result-list, #close { font: 12px courier; padding-top: 3px; padding-bottom: 3px; padding-left: 10px; padding-right: 10px; display: block; } a.result-list:hover { background-color: #dddddd; } </style>
Pole tekstowe:
<input type="text" id="search" name="zespol" />
podpowiedzi.php (do tego pliku się odwołuję w js)
<?php if($_GET['action'] == 'search') { $ret = '<div id="close" style="color: #0000ff; text-decoration: underline; text-align: right;">Zamknij</div>'; $query = pg_query("SELECT nazwa FROM zespoly WHERE UPPER (nazwa) LIKE UPPER ('%".pg_escape_string($search)."%')"); $ret .= '<a class="result-list">'.$row['nazwa'].'</a>'; } } ?>