Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jquery]Dynamiczne odejmowanie z zmiennej.
Croos22
post
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Witam.

Próbuje stworzyć kod który dynamicznie będzie odejmował podaną wartość a mi odejmuje jakoś dziwnie. Jak samo chce.

Po wpisaniu 20 odejmnie 2.

[JAVASCRIPT] pobierz, plaintext
  1. liczba = 1000;
  2. $(".ile").html(liczba);
  3. $("#in").keydown(
  4. function(){
  5. var liczba_form = $("#in").val();
  6. var wynik = liczba - liczba_form;
  7. $(".ile").html(wynik);
  8. });
[JAVASCRIPT] pobierz, plaintext


Czekam na podpowidzi jak problem rozwiązać ew. jakieś lepsze rozwiązanie.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




te pola to input'y formularza? co dziwnie odejmuje, podaj więcej informacji.
Go to the top of the page
+Quote Post
rocktech.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Obserwuj bardziej zdarzenie keyup. Bo po wpisaniu 20 działa tak odejmuje 0 (gdyż wartość pola po zdarzeniu keydown wynosiła 0) i potem odejmuje 2.
A jak obserwujesz keyup to wtedy pobierze wartość właściwą pola.

Najbardziej możesz polegać na change(). Tylko będziesz musiał ciut zmodyfikować skrypt aby odświeżać na żywo

[JAVASCRIPT] pobierz, plaintext
  1. liczba = 1000;
  2.  
  3. $("#ile").html(liczba);
  4.  
  5. $("#in").keyup(
  6.  
  7. function(){
  8.  
  9. var liczba_form = $("#in").val();
  10.  
  11. var wynik = liczba - liczba_form;
  12.  
  13. $("#ile").html(wynik);
  14.  
  15. });
[JAVASCRIPT] pobierz, plaintext


Ten post edytował rocktech.pl 28.12.2011, 14:58:01
Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Kod
var liczba_form = $("#in").val();

->
Kod
var liczba_form = $(this).val();


Po co wyszukiwać drugi raz ten sam element? Używamy this.
Go to the top of the page
+Quote Post
Croos22
post
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Mam jeszcze jedno pytanie.

A jeśli bym chciał więcej pól tekstowych o takich samych atrybutach bez powielania kodu?
Go to the top of the page
+Quote Post
kamil4u
post
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Operujesz na klasie (class="klasa" i $('.klasa'))i w jQuery "each".
Go to the top of the page
+Quote Post
Croos22
post
Post #7





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Zrobiłem tak:

[JAVASCRIPT] pobierz, plaintext
  1. $("#in").keyup(function() {
  2. $(this).each(function(){
  3. var liczba_form = $(this).val();
  4. var wynik = liczba - liczba_form;
  5. $(".ile").html(wynik);
  6. });
  7. });
[JAVASCRIPT] pobierz, plaintext


Dlaczego mi to nie działa? Odejmuje w pierwszym inpucie i w dwóch klasach wstawia.

Ten post edytował Croos22 28.12.2011, 19:56:26
Go to the top of the page
+Quote Post
Shili
post
Post #8





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


[JAVASCRIPT] pobierz, plaintext
  1. $("#in").keyup(function() {
  2. // #in powinien być JEDEN w kodzie; nie ma potrzeby użycia poniższego this
  3. $(this).each(function(){
  4. var liczba_form = parseInt($(this).val()); // upewnijmy się, że jest to int
  5. var wynik = liczba - liczba_form;
  6. $(".ile").html(wynik);
  7. });
  8. });
[JAVASCRIPT] pobierz, plaintext


http://jsfiddle.net/ - umieść kod z html; popatrzy się i pokombinuje
Go to the top of the page
+Quote Post
Croos22
post
Post #9





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Kod html wygląda tak:
http://jsfiddle.net/L4reZ/3/
Go to the top of the page
+Quote Post
Shili
post
Post #10





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


#id MUSI być unikalne per dokument. Zawsze i bezwzględnie należy tego przestrzegać.

http://jsfiddle.net/3xnPx/
Przeanalizuj (IMG:style_emoticons/default/smile.gif)

@down
Lol, to tak jak na szybko się coś robi (IMG:style_emoticons/default/biggrin.gif)
http://jsfiddle.net/3xnPx/2/ - nie zapisałam kodu (IMG:style_emoticons/default/smile.gif) Ten podany do niczego się nie nadawał i nie taki miał być, co mam nadzieję widać po pierwszej linijce odnośnie ID.

Ten post edytował Shili 28.12.2011, 20:38:09
Go to the top of the page
+Quote Post
kamil4u
post
Post #11





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Co Wy w ogóle za kody piszecie? Wszystko źle od początku do końca....

Po pierwsze trzeba sprawdzić jak działa each, Wy tego nie zrobiliście...
Nie wiem, który kod analizować, bo większość jest bezsensu...
Będę pisał z każdego kodu po trochę.

Najpierw przypisujecie zdarzenie $("#in").keyup , a później używacie $(this).each. This w tym momencie wskazuje na konkretny element( jeden element, ten, który jest kliknięty ), a Wy używacie później each - to totalnie bez sensu.

Przeanalizujcie to i pytajcie jeżeli macie wątpliwości, bo mieszacie wszystko( pętle, zdarzenia ): http://jsfiddle.net/3xnPx/1/
Ten kod nadal mi się nie podoba, ale jest już sporo lepszy, niż był.

Pozdrawiam
Go to the top of the page
+Quote Post

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: 17.09.2025 - 13:05