Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Shoutbox ,a jquery
Forum PHP.pl > Forum > Przedszkole
dram
Witajcie.

Pisałem na stronie ipboard support, jednak stwierdziłem że to już szkoła jquery mi pomoże, nie ich support.

TJ.

Na stronie głównej mam shoutbox oraz swój skrypt napisany w jquery,javascript - cały ten skrypt pobieram przez file_get_contents a następnie umieszczam na stronie.


Gdy
  1. <script src="jquery.js" type="text/javascript"></script>


Shoutbox nie działa, zaś mój skrypt działa.

Gdy nie includuje to analogicznie działa.

Jednak zaciekawiła mnie pewna funkcja w jquery

  1. jQuery.noConflict();


Wrzucam ją w <script></script> (mam nadzieje ze to tam trzeba wrzucić)

To shoutbox działa, ale mój skrypt niestety nie.

Podczas ładowania strony ->

  1. [17:19:38.061] TypeError: jQuery.format is not a function


A gdy wywołuje jakieś zdarzenie w moim skrypcie to

--
  1. [17:19:58.179] TypeError: $(...) is null


Pozdrawiam.
b4rt3kk
Używasz innych bibliotek JS?

  1. <script type="text/javascript">
  2. $.noConflict();
  3. $(function() {
  4. // tu umieszczasz kod jQuery
  5. });
  6. // inne skrypty
dram
Mam jeszcze

  1. <script src="script/high/js/highcharts.js"></script>
  2. <script src="script/high/js/modules/exporting.js"></script>



Czyli wszystkie function() mam umieścić w

  1. // tu umieszczasz kod jQuery


Trochę tego jest jquery -> mianowicie funkcji.
b4rt3kk
Może być też tak:

  1. <script type="text/javascript">
  2. $.noConflict();
  3. <script src="script/high/js/jQuery.js"></script>
  4. <script src="script/high/js/highcharts.js"></script>
  5. <script src="script/high/js/modules/exporting.js"></script>

dram
  1. <script type="text/javascript">
  2. jQuery.noConflict();
  3. </script>


Czy też tak jak podałeś na samym początku skryptu, a potem załadowanie jquery i 2 pozostałych plików, sprawia ze SB nie działa,a mój skrypt śmiga.

  1. [18:58:30.169] TypeError: jQuery.format is not a function
  2. [18:58:30.124] TypeError: element.dispatchEvent is not a function
b4rt3kk
Konflikt polega na tym, że biblioteki JS z których korzystasz zapewne też wykorzystują znak $ jako alias. Przerób wszystkie znaki dolara w funkcjach jQuery na rozszerzoną nazwę, tj. jQuery zamiast $. Ewentualnie umieść wszystkie funkcje jQuery pomiędzy:

  1. jQuery(document).ready(function($) {
  2.  
  3. });


uprzednio oczywiście dodając $.noConflict();
dram
Hmm nie rozumiem mógłbyś to na przykładzie mi pokazać ? np.

  1. jQuery(document).ready(function(){
  2. document.forms['platnosc'].reset();
  3. jQuery("#platnosc").validate({
  4. messages: {
  5. imie: {
  6. required: "Proszę uzupełnić pole Imię.",
  7. minlength: jQuery.format("Musi być minimum {0} znaków.")
  8. },
  9. opis: {
  10. required: "Uzupełnij wszystkie pola."
  11. },
  12. email: {
  13. required: "Proszę uzupełnić pole Adres e-mail."
  14. },
  15. kwota: {
  16. required: "Proszę uzupełnić pole vip/slot."
  17. },
  18. typ_gry: {
  19. required: "Prosze wpisać vip/slot."
  20. },
  21. vip_slot: {
  22. required: "Proszę uzupełnić pole vip/slot."
  23. }
  24. }
  25. });
  26. });


Oraz na czystej funkcji np.

  1. function sprawdz_wart(){
  2.  
  3. var steam = '';
  4. var ns = '';
  5. var typ_cs = getCheckedValue(document.forms['platnosc'].elements['typ_gry']);
  6. $("#typ_cs_div").html('');
  7. if(typ_cs == "steam"){
  8. $("#typ_cs_div").html(steam);
  9. }
  10. else if(typ_cs == "ns"){
  11. $("#typ_cs_div").html(ns);
  12. }
  13. }


Dzięki wielkie.

Pozdrawiam

p.s I powiedz mi czy w jquery.js mam coś ruszać ?
b4rt3kk
  1. <script type="text/javascript">
  2. $.noConflict();
  3. jQuery(document).ready(function(){
  4. document.forms['platnosc'].reset();
  5. jQuery("#platnosc").validate({
  6. messages: {
  7. imie: {
  8. required: "Proszę uzupełnić pole Imię.",
  9. minlength: jQuery.format("Musi być minimum {0} znaków.")
  10. },
  11. opis: {
  12. required: "Uzupełnij wszystkie pola."
  13. },
  14. email: {
  15. required: "Proszę uzupełnić pole Adres e-mail."
  16. },
  17. kwota: {
  18. required: "Proszę uzupełnić pole vip/slot."
  19. },
  20. typ_gry: {
  21. required: "Prosze wpisać vip/slot."
  22. },
  23. vip_slot: {
  24. required: "Proszę uzupełnić pole vip/slot."
  25. }
  26. }
  27. });
  28. });
  29.  
  30. function sprawdz_wart(){
  31.  
  32. var steam = '';
  33. var ns = '';
  34. var typ_cs = getCheckedValue(document.forms['platnosc'].elements['typ_gry']);
  35. $("#typ_cs_div").html('');
  36. if(typ_cs == "steam"){
  37. $("#typ_cs_div").html(steam);
  38. }
  39. else if(typ_cs == "ns"){
  40. $("#typ_cs_div").html(ns);
  41. }
  42. }


Tak to powinno wyglądać. Tylko, że widzę że znów używasz jQuery poza obrębem funkcji jQuery(document).ready(function(){, więc jeśli włączyłeś noConflict to wszędzie musisz zamiast aliasu $ musisz używać jQuery. Poprawnie powinno być tak:

  1. <script type="text/javascript">
  2. $.noConflict();
  3. jQuery(document).ready(function(){
  4. // wewnątrz znak $ nie spowoduje konfliktu
  5. document.forms['platnosc'].reset();
  6. jQuery("#platnosc").validate({
  7. messages: {
  8. imie: {
  9. required: "Proszę uzupełnić pole Imię.",
  10. minlength: jQuery.format("Musi być minimum {0} znaków.")
  11. },
  12. opis: {
  13. required: "Uzupełnij wszystkie pola."
  14. },
  15. email: {
  16. required: "Proszę uzupełnić pole Adres e-mail."
  17. },
  18. kwota: {
  19. required: "Proszę uzupełnić pole vip/slot."
  20. },
  21. typ_gry: {
  22. required: "Prosze wpisać vip/slot."
  23. },
  24. vip_slot: {
  25. required: "Proszę uzupełnić pole vip/slot."
  26. }
  27. }
  28. });
  29. });
  30.  
  31. // ale już tutaj tak (jeśli odnosi się do funkcji biblioteki jQuery)
  32.  
  33. function sprawdz_wart(){
  34.  
  35. var steam = '';
  36. var ns = '';
  37. var typ_cs = getCheckedValue(document.forms['platnosc'].elements['typ_gry']);
  38. jQuery("#typ_cs_div").html(''); // tu był $, musi być jQuery, jak teraz
  39. if(typ_cs == "steam"){
  40. jQuery("#typ_cs_div").html(steam); // tu był $, musi być jQuery, jak teraz
  41. }
  42. else if(typ_cs == "ns"){
  43. jQuery("#typ_cs_div").html(ns); // tu był $, musi być jQuery, jak teraz
  44. }
  45. }
dram
Jeszcze jest jedna rzecz dziwna.

Wywala błąd
  1. [00:05:35.268] TypeError: jQuery.format is not a function



Przy ładowaniu strony.

Przyciski na shoutboxie działają (wbrew pozorom bo wcześniej jak sb nie działal to przyciski też)

Z tym ,że jak napisze coś na sb to nie jest to wysyłane.

---

SB działa dopiero jak nacisne coś w swoim skrypcie (tzn wywołam funkcje jquery np. naciśnięcie buttona "radio" i wtedy coś się dzieje)

OD tego momentu sb cudownie się naprawia. No ale po odświeżeniu strony wracamy z powrotem do tego samego
b4rt3kk
Bo format nie jest funkcją jQuery, widocznie to z innej biblioteki, musisz się dowiedzieć z jakiej i użyć właściwej nazwy. Jedyne co łączy to z jQuery to alias dolara.

  1. $.format("Musi być minimum {0} znaków.")
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.