Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Wyszukiwanie dynamiczne
Forum PHP.pl > Forum > Przedszkole
KamilStefan
Witam!
Skryptów wyszukiwania dynamicnego znalazłem dużo, jednak nie taki, jakiego potrzebuję.
Mam stronę, która składa się z pola wyszukiwania, w które można wpisać cokolwiek oraz listy poniżej niego (wyświetlanej w pętli w php).
Chodzi mi o to, aby użytkownikowi w czasie wpisywania tekstu pozostawały tylko te linie z listy, które owy fragment w sobie zawierają.
Z góry dziękiuję za wszelkie podpowiedzi/wskazówki/rozwiązania.
SmokAnalog
Ja bym zrobił coś w ten deseń:
[JAVASCRIPT] pobierz, plaintext
  1. $("#search")
  2. .on("input", function () {
  3. $("#results li")
  4. .hide()
  5. .filter(function () {
  6. return $(this).text().indexOf($("#search").val()) >= 0;
  7. })
  8. .show();
  9. });
[JAVASCRIPT] pobierz, plaintext


Mój przykład zadziała tylko w nowoczesnych przeglądarkach, bo używa zdarzenia "input". Możesz to zastąpić "keyup", wtedy będzie działać również ze starszymi przeglądarkami. Po wpisaniu znaku, wszystkie elementy listy są chowane, a następnie pokazywane są tylko te, które zawierają w tekście wpisaną frazę.
KamilStefan
I jak to użyć na stronie? Przyznam szczerze, że o ile php znam już w miarę, o tyle w JS stawiam dopiero pierwsze kroki (tak jak tytuł działu - Przedszkole)
SmokAnalog
Musisz na stronie załączyć bibliotekę jQuery na przykład tak (polecam wstawić to zaraz przed zamknięciem </body>):
  1. <script src="http://code.jquery.com/jquery.min.js"></script>

A potem wstawić mój skrypt, najlepiej też zapisać go w zewnętrznym pliku i w analogiczny sposób połączyć ze stroną. Pamiętaj, że identyfikatory elementów HTML muszą się zgadzać, ja przykładowo założyłem, że pole tekstowe ma id="search", a lista z wynikami to <ol> lub <ul> z id="results".
KamilStefan
Zrobiłem tak i nic się nie dzieje w czasie wpisywania w polu tekstowym.
SmokAnalog
Pokaż swój kod HTML. Jeśli to plik PHP, to możesz pokazać sam wynikowy HTML (pokaż źródło).
KamilStefan
Żródło części strony z listą.

  1. <script src="http://code.jquery.com/jquery.min.js"></script>
  2. $("#search")
  3. .on("input", function () {
  4. $("#results li")
  5. .hide()
  6. .filter(function () {
  7. return $(this).text().indexOf($("#search").val()) >= 0;
  8. })
  9. .show();
  10. });
  11. <div class="section">
  12. <div id="portfolio" class="bg-color">
  13. <div class="container">
  14. <div class="title-section">
  15.  
  16. <h1>Tytul</h1>
  17. <p>Content</p>
  18. <input id="search"/>
  19. </div>
  20. <ul class="katlista" id="results">
  21. <li><a href="http://strona.pl/podstrona.html" rel="bookmark" title="Tresc linku">Tresc linku</a></li>
  22. </ul>
  23.  
  24. </div>
  25. </div>
  26. </div>
SmokAnalog
Cytat(SmokAnalog @ 3.11.2013, 20:51:15 ) *
polecam wstawić to zaraz przed zamknięciem </body>

KamilStefan
Dzięki, działa.
A może wiesz jak zmienić, aby nie uwzględniało rozróżnienia na małe i wielkie litery?
SmokAnalog
Jasne, zamień tę linię:
[JAVASCRIPT] pobierz, plaintext
  1. return $(this).text().indexOf($("#search").val()) >= 0;
[JAVASCRIPT] pobierz, plaintext

Na tę:
[JAVASCRIPT] pobierz, plaintext
  1. return $(this).text().toLowerCase().indexOf($("#search").val().toLowerCase()) >= 0;
[JAVASCRIPT] pobierz, plaintext


EDIT

Przepraszam, pomyliłem nazwę metody biggrin.gif
KamilStefan
Wszystko super działa. Dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.