Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JQuery] tworzenie wtyczki, nie działa tak jak powinna
scalar
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.04.2003
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Stworzyłem wtyczkę którą zastosowałem dla wszystkich $('input') pól input w dokumencie. Wtyczka ma za zadanie sformatowanie pola input i dodanie po obu stronach przyciski dodaj i usuń zwiększające i zmniejszające wartość tego pola. W pierwszej fazie działa prawidłowo, formatuje wszystkie pola, dodaje przyciski, które nawet działają. jednak kliknięcie któregokolwiek z nich powoduje zmianę wartości we wszystkich polach. Zależy mi na zastosowaniu tego pluginu w sposób "hurtowy", ponieważ będzie on zastosowany w tabeli która będzie się dynamicznie zmieniała.

  1. jQuery.fn.td_amountsof = function(options)
  2. {
  3. var defaults = { min: 0,
  4. max: 999,
  5. maxlen: 3,
  6. };
  7.  
  8. // rozszerzenie domyślnej konfiguracji
  9. var options = $.extend(defaults, options);
  10.  
  11. var $this = $(this);
  12.  
  13. if(!$this.val()) $this.val(0);
  14.  
  15. $this.attr('maxlength',options.maxlen);
  16. $this.css({'width':options.maxlen*10,
  17. 'text-align': 'center'});
  18.  
  19. $this.before('<A>a</A>');
  20. $this.prev().empty().wrapInner('<DIV>minus</DIV>');
  21.  
  22.  
  23. $this.after('<A>a</A>');
  24. $this.next().empty().wrapInner('<DIV>plus</DIV>');
  25.  
  26. $this.prev().click(function()
  27. {
  28. if(options.min < parseInt($this.val())) $this.val(parseInt($this.val())-1);
  29. }
  30. );
  31. $this.next().click(function()
  32. {
  33. if(options.max > parseInt($this.val())) $this.val(parseInt($this.val())+1);
  34. }
  35. );
  36. };
  37.  
  38. $("input").td_amountsof();
  39.  
  40.  
  41. <INPUT Type="text" id="1">
  42. <INPUT Type="text" id="2">
  43. <INPUT Type="text" id="3">
  44. <INPUT Type="text" id="4">
  45. <INPUT Type="text" id="5">
  46. <INPUT Type="text" id="6">
  47. <INPUT Type="text" id="7">
  48. <INPUT Type="text" id="8">
  49. </BODY>


proszę o sugestie.

zauważyłem że plugin wykonuje się tylko raz dla pierwszego elementu, ale stosuje dla wszystkich, sprawdziłem to wstawiając alert($this).attr('id') - zwracało tylko raz "1". Myślałem że wykona się tyle razy ile jest inputów, przyznaję że nie rozumiem tego mechanizmu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:09