Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery]Dynamiczne odejmowanie z zmiennej.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Croos22
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.
piotrooo89
te pola to input'y formularza? co dziwnie odejmuje, podaj więcej informacji.
rocktech.pl
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
kamil4u
Kod
var liczba_form = $("#in").val();

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


Po co wyszukiwać drugi raz ten sam element? Używamy this.
Croos22
Mam jeszcze jedno pytanie.

A jeśli bym chciał więcej pól tekstowych o takich samych atrybutach bez powielania kodu?
kamil4u
Operujesz na klasie (class="klasa" i $('.klasa'))i w jQuery "each".
Croos22
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.
Shili
[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
Croos22
Kod html wygląda tak:
http://jsfiddle.net/L4reZ/3/
Shili
#id MUSI być unikalne per dokument. Zawsze i bezwzględnie należy tego przestrzegać.

http://jsfiddle.net/3xnPx/
Przeanalizuj smile.gif

@down
Lol, to tak jak na szybko się coś robi biggrin.gif
http://jsfiddle.net/3xnPx/2/ - nie zapisałam kodu smile.gif Ten podany do niczego się nie nadawał i nie taki miał być, co mam nadzieję widać po pierwszej linijce odnośnie ID.
kamil4u
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
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.