Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery][cookies][php] Button, który ma disabled w nieskończoność
Forum PHP.pl > Forum > Przedszkole
rokasny
  1. <script type="text/javascript">
  2. function setCookie(key, value) {
  3. var expires = new Date();
  4. expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
  5. document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
  6. }
  7.  
  8. function getCookie(key) {
  9. var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
  10. return keyValue ? keyValue[2] : null;
  11. }
  12.  
  13. if(getCookie(button_cookie) === 1){
  14. $('button').attr("disabled",true);
  15. };
  16. $(document).ready(function(){
  17. $('button').click(function(){
  18.  
  19. $.ajax ({
  20. type: "POST",
  21. url: "buton.php",
  22. data:{obliczalg: $(this).val()},
  23. success: function(msg)
  24. {
  25.  
  26. alert( "Obliczono:"+msg);
  27. $('.poka').slideToggle("slide", true);
  28. setCookie(button_cookie,1);
  29.  
  30. $(this).attr("disabled",true);
  31. },
  32. error: function (XMLHttpRequest, textStatus,
  33. errorThrown)
  34. {
  35. alert('Error submitting request.');
  36. }
  37. });
  38.  
  39. });
  40.  
  41. });
  42. </script>

button :
  1. <button value='<?php echo $row[0] ?>' type='submit' name='obliczalg' class="ajax" )">Oblicz</button>


Witam wszystkich, proszę o podpowiedzi - co jest nie tak z kodem. Bez cookies wykonuje pięknie zadaną mu funkcje, jednak z cookies nie odpowiada po kliknięciu w ogóle. Próbuje zrobić tak, żeby po kliknięciu button stał się disabled i był tak w nieskończoność (nawet po odświeżeniu strony).
com
class="ajax" )" a co to?
rokasny
css ale nieistotny tutaj
com
istotny bo składnia przycisku jest nie prawidłowa wiec nie będzie działać...

ponadto czym jest button_cookie?
rokasny
hm no to powinna być zmienna do czegoś
com
no zgadza sie tylko w twoim kodzie jest ona nie określona wgl masz kilka błędów w składni js wiec dlatego Ci to nie działa smile.gif

Zajrzyj do konsoli popraw je a potem jak dalej nie będzie działać to wrzuć poprawiony kod smile.gif
rokasny
no właśnie, a czy mogę prosić o podpowiedzi co poprawić, robię jednorazowy projekt na studiach i za bardzo nie ogarniałem js wcześniej:(
com
no dałem podpowiedź uruchom firebug/kosole błędów i sprawdź gdzie się pojawiły błędy i popraw wink.gif Nie jestem jasnowidze a nie mam całego twojego kodu smile.gif
rokasny
W pierwszej kolejności (póki co jedyne):
  1. Uncaught ReferenceError: button_cookie is not defined
com
to już Ci powiedziałem po powierzchownej analizie http://www.w3schools.com/js/js_cookies.asp smile.gif
rokasny
staram się to ogarnąć, ale nie mam lekko, pomożecie poprawić mi ten mój kod? button_cookie to musi być nasz guzik, tak? mamy set i get cookie dobrze?

edit: Takbedzie wygladalo setCookie??

  1. function setCookie(ajax, $(this).val(), expires, path, domain, secure){
  2. document.cookie=ajax+'='+escape($(this).val()||'')+
  3. (expires?';expires='+new Date(+new Date()+expires*864e5).toGMTString():'')+
  4. (path?';path='+path:'')+
  5. (domain?';domain='+domain:'')+
  6. (secure?';secure':'');
  7. }
nospor
facepalmxd.gif
Projekt na studiach..... to moze jakies podstawy wpierw by poznac, a potem brac sie za pisanie??

setCookie(button_cookie,1);
Krzyczy ci blad ze nie ma button_cookie, bo to ma byc tekst, czyli nazwa ciasteczka. A nazwy panie kolego, bierze sie w apostrofy :/

setCookie('button_cookie',1);

Analogicznie przy getCoockie..



Zas twoja nowa setCookie co podales w poprzednim poscie jest zla. W deklaracji parametrow funkcji nie wstawia sie dynamicznie wyliczanych wartosci.
Dostales linka gdzie masz podane jak setCookie ma wygladac. No nawet skopiowac na studiach juz nie ucząquestionmark.gifquestionmark.gif
rokasny
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. function setCookie(key, value) {
  4. var expires = new Date();
  5. expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
  6. document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
  7. }
  8.  
  9. function getCookie(key) {
  10. var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
  11. return keyValue ? keyValue[2] : null;
  12. }
  13.  
  14. if(getCookie('button_cookie') === 1){
  15. $('button').attr("disabled",true);
  16. };
  17. $('button').click(function(){
  18.  
  19. $.ajax ({
  20. type: "POST",
  21. url: "buton.php",
  22. data:{obliczalg: $(this).val()},
  23. success: function(msg)
  24. {
  25.  
  26. alert( "Obliczono:"+msg);
  27. $('.poka').slideToggle("slide", true);
  28. setCookie('button_cookie',1);
  29.  
  30. },
  31. error: function (XMLHttpRequest, textStatus,
  32. errorThrown)
  33. {
  34. alert('Error submitting request.');
  35. }
  36. });
  37. $(this).attr("disabled",true);
  38.  
  39. });
  40.  
  41. });
  42. </script>

button:
  1. <button value='<?php echo $row[0] ?>' type='submit' name='obliczalg' class="ajax" )">Oblicz MRP</button>


Co bym musiał dalej pozmieniać w tym kodzie? sad.gif
nospor
No ale co ci znowu nie dziala?

ps: nie === 1 a == 1
rokasny
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. function setCookie(key, value) {
  4. var expires = new Date();
  5. expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
  6. document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
  7. }
  8.  
  9. function getCookie(key) {
  10. var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
  11. return keyValue ? keyValue[2] : null;
  12. }
  13.  
  14. if(getCookie('button_cookie') == 1){
  15. $('button').attr("disabled",true);
  16. };
  17. $('button').click(function(){
  18.  
  19. $.ajax ({
  20. type: "POST",
  21. url: "buton.php",
  22. data:{obliczalg: $(this).val()},
  23. success: function(msg)
  24. {
  25.  
  26. alert( "Obliczono:"+msg);
  27. setCookie('button_cookie',1);
  28.  
  29. },
  30. error: function (XMLHttpRequest, textStatus,
  31. errorThrown)
  32. {
  33. alert('Error submitting request.');
  34. }
  35. });
  36. $(this).attr("disabled",true);
  37. $('.poka').slideToggle("slide", true);
  38.  
  39.  
  40. });
  41.  
  42. });
  43. </script>

Z tym ==1 działa, dziękuje ogromnie! ale mam kilka wierszy z tym buttonem (który ma inny value o odpowiednim dla każdego wiersza ID) i w innej zakładce dodaje kolejne wiersze (więc nowe wiersze mają button dalej nieaktywny), które już nie chce aby były disabled do momentu aż je klikne
nospor
No to dla kazdego buttona przypisuj ciasteczko o innej nazwie a nie takie samo dla wszystkich jak teraz
werdan
>ale mam kilka wierszy z tym buttonem (który ma inny value o odpowiednim dla każdego wiersza ID) i w innej zakładce dodaje kolejne wiersze (więc nowe wiersze mają button dalej nieaktywny), które już nie chce aby były disabled do momentu aż je klikne

  1.  
  2. $('button').attr("disabled",true);
  3.  



W kodzie powyzej blokujesz wszystkie buttony. Musisz jakos jes rozroznic, np. id i po kliknieciu zapisywac ich id do cookie, potem odczytywac i blokowac.
rokasny
jak to id konkretnego buttona do niego dopisać? ohmy.gif co_jest.gif
moze zamiast 'button' dać button value (to jakby nie było jest rozne id) tylko jak?
markuz
  1. <button id="1"></button>

Kod
$('button#1')
werdan
Pisane bez testowania. Jak nie działa, wklejaj błędy z konsoli.
Kazdy button musi miec swoj wlasny unkalny id.

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. function setCookie(key, value) {
  4. var expires = new Date();
  5. expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
  6. document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
  7. }
  8.  
  9. function getCookie(key) {
  10. var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
  11. return keyValue ? keyValue[2] : null;
  12. }
  13.  
  14. $('button').each(function(i, el) {
  15. if (getCookie('bc' + $(this).attr("id"))) {
  16. $(this).attr("disabled", true);
  17. }
  18. });
  19.  
  20. $('button').click(function() {
  21. var id = $(this).attr('id');
  22. $.ajax({
  23. type: "POST",
  24. url: "buton.php",
  25. data: {obliczalg: $(this).val()},
  26. success: function(msg) {
  27. alert("Obliczono:" + msg);
  28. setCookie('bc' + id, 1);
  29. },
  30. error: function(XMLHttpRequest, textStatus, errorThrown) {
  31. alert('Error submitting request.');
  32. }
  33. });
  34. $(this).attr("disabled", true);
  35. $('.poka').slideToggle("slide", true);
  36. });
  37. });
rokasny
tylko, że ja używam jednego buttona o innym value <td><button value='<?php echo $row[0] ?>' type='submit' ... row[0] jest odpowiednie dla każdego wiersza
werdan
Nie kumam. Otwórz strone, kliknij prawym, wybierz "pokaz zrodlo" i wklej tu html od tych buttonów.
rokasny
Cytat(werdan @ 2.12.2013, 14:57:53 ) *
Pisane bez testowania. Jak nie działa, wklejaj błędy z konsoli.
Kazdy button musi miec swoj wlasny unkalny id.

Efekt ten sam, disabled mają wszystkie buttony. Konsola nie wywala błędów.

  1. $zapytanie = "SELECT * FROM `zamowienia`";
  2. $algorytm = $wynik = mysql_query($zapytanie);
  3.  
  4. echo "<form method='post' action=''>";
  5. echo "<p>";
  6. echo "<table id ='tab-a' boder='1'><tr>";
  7. echo "<td><strong>Lp.</strong></td>";
  8. echo "<td><strong>Nazwa produktu</strong></td>";
  9. echo "<td><strong>Ilość</strong></td>";
  10. echo "<td><strong>Klient</strong></td>";
  11. echo "<td><strong>Termin</strong></td>";
  12. echo "<td><strong>Algorytm</strong></td>";
  13. echo "<td><strong>Usuń</strong></td>";
  14. echo "</tr>";
  15.  
  16. while ( $row = mysql_fetch_row($wynik) ) {
  17. echo "</tr>";
  18. echo "<td>" . $i++ .'.'. "</td>";
  19. echo "<td>" . $row[1] . "</td>";
  20. echo "<td>" . $row[2] . "</td>";
  21. echo "<td>" . $row[3] . "</td>";
  22. echo "<td>" . $row[4] . "</td>";?>
  23. <td><button value='<?php echo $row[0] ?>' type='submit' name='obliczalg' class="ajax" )">Oblicz MRP</button></td>
  24. <?php echo "<td style='padding-left:18px;'><a name='usun' href=menu.php?menu=3&usun=".$row[0]."><img src='kosz.png'></a></td>";
  25. echo "</tr>";
  26. }
  27. echo "</table>";

Tak więc button mam jeden i oblicza mi odpowiedni algorytm dla konkretnego wiersza (id w bazie do konkretnego produktu)
werdan
  1.  
  2. <td><button value='<?php echo $row[0] ?>' id="<?php echo $i ?>" type='submit' name='obliczalg' class="ajax" >Oblicz MRP</button></td>


Mozesz dac $i jako id.

  1. id="<?php echo $i ?>"
  2. lub z jakims textem aby było bardziej unikalne, np.:
  3. id="button<?php echo $i ?>"
rokasny
jezeli dam zamiast $i $row[0] tez powinno? wtedy w script:
  1. if(getCookie('button_cookie') == 1){
  2. $('button#button<?php echo $row[0] ?>').attr("disabled",true);
  3. };

Próbuje i z $i i z $row[0] ale w konsoli wyrzuca mi: "Unexpected token ILLEGAL" i zamiast php
  1. $('button#<br />
  2. <b>Notice</b>: Undefined variable: row in <b>F:\Server\Apache2\htdocs\zamowienia.php</b> on line <b>22</b><br />
  3. ').attr("disabled",true)
werdan
$row jest tylko dostepne w petli, patrz twój ostatni wklejony kod, linia 16.

Sprobuj to co ostatnio wkleiłem, moze zadziała biggrin.gif

$row[0] jako id tez moze byc.

<td><button value='<?php echo $row[0] ?>' id="<?php echo $row[0] ?>" type='submit' name='obliczalg' class="ajax" >Oblicz MRP</button></td>
lub
<td><button value='<?php echo $row[0] ?>' id="<?php echo "button".$row[0] ?>" type='submit' name='obliczalg' class="ajax" >Oblicz MRP</button></td>
rokasny
aaa! jestes mistrz! Dziękuje
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.