Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Tagi w inpucie
Forum PHP.pl > Forum > Przedszkole
bahh
Witam, potrzebuję skryptu działającego jak ten:
http://timschlechter.github.io/bootstrap-tagsinput/examples/

jako "Objects as tags"

czyli mamy tablicę typu:

1 : Jan
2: Adam
3: Wojtek
6: Jarek

i wpisujemy w inputa literke J, to wyświetli podpowiedzi Jan, Jarek, a gdy wybierzemy Jan, wartością przesyłaną w inpucie będzie nie Jan a 1 (liczba w tablicy przypisana do Jan). Rzecz jasna żeby po przecinku wprowadzać kolejne osoby.

Skrypt byłby na początku idealny, jednakże nie działa mi on w Chromie (mam na myśli wersję trzymaną na dysku) i też miałem problemy które są opisane w tym poście: http://forum.php.pl/index.php?showtopic=236022 także ze względu na niejasną dokumentacje, niezrozumiały kod szukam czegoś innego.
kpt_lucek
Select2
bahh
Mam coś takiego:
http://jsfiddle.net/yf71qgcc/

Jednakże wciąż nie śmiga, wie ktoś gdzie jest błąd?
kpt_lucek
Jsfiddle

#1: obiekty w tablicy:
BYŁO: { id: 54, text 'Jan Kowalski'}
JEST: { id: 54, text: 'Jan Kowalski'}

#2: Ładujesz plugin do inputa na $(document).ready() a tablicę danych dostarczasz podczas odczytu skryptu = jeszcze przed zdarzeniem .ready()

#3: drobnostki w jsfiddle podczas załączania plików css i js


Pozdrawiam
bahh
wszystko śmiga, chciałbym jednak, żeby po załadowaniu strony był np. tylko Jan Kowalski i Staś Stasiowaty

wiem że kasując linijkę $('#e21').select2('data', preload_data); po załadowaniu strony nie wyświetlą się wszystkie wartości w tablicy
kpt_lucek
Cytat(bahh @ 24.10.2014, 10:29:26 ) *
wszystko śmiga, chciałbym jednak, żeby po załadowaniu strony był np. tylko Jan Kowalski i Staś Stasiowaty

wiem że kasując linijkę $('#e21').select2('data', preload_data); po załadowaniu strony nie wyświetlą się wszystkie wartości w tablicy

Ajax?
bahh
chcialbym uniknąć ajaxa, po prostu w tym inpucie jest np. VALUE="54,55" i wyświetla zgodnie z tablicą tam przesłaną przypisane tam imiona
kpt_lucek
  1. <?php
  2. $array = array(
  3. 'id' => 123,
  4. 'text' => "Janek"
  5. ),
  6. 'id' => 124,
  7. 'text' => "Franek"
  8. ),
  9. );
  10. ?>
  11. <html>
  12. <head>
  13. <!-- trochę kodu -->
  14. </head>
  15. <body>
  16. <script type="text/javascript">
  17. var preload_data = '<?php echo json_encode($array); ?>';
  18. $(document).ready(function () {
  19. $('#e21').select2({
  20. multiple: true,
  21. query: function (query) {
  22. var data = {results: []};
  23. $.each(preload_data, function () {
  24. if (query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0) {
  25. data.results.push({id: this.id, text: this.text});
  26. }
  27. });
  28. query.callback(data);
  29. }
  30. });
  31. $('#e21').select2('data', preload_data);
  32. });
  33. </script>
  34. </body>
  35. </html>


Nie testowane
bahh
Podsunąłeś mi w sumie rozwiązanie, wykonałem je nieco inaczej ale bazowałem na twoim pomyśle. Dzięki wielkie za pomoc 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.