eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJak to rozwiązać?
Ilość wypowiedzi w tym wątku: 12

  • 1. Data: 2012-03-20 09:30:35
    Temat: Jak to rozwiązać?
    Od: "S" <a...@w...pl>

    Witam

    Mam taki problem i nie wiem jak go ugryźć sensownie.
    Chodzi o coś takiego:
    Mam pola formularza netto, vat, brutto.
    Założenie jest takie, że user wpisuje wartość netto, wybiera stawkę VAT i
    wylicza mu się wartość brutto. I tu na razie nie ma problemu. Przy pomocy
    JQuery poradziłem sobie myślę w sposób dość prosty (kod na końcu postu)
    Problem jednak w tym, że muszę to zrealizować też tak, że użytkownik może
    dodawać dowolną ilość wierszy z polami netto, vat, brutto i dla każdego z
    nich niezależnie oczywiście musi być wyliczona ta wartość brutto w
    zależności od podanej wartości netto i wybranej stawki VAT.
    Jak to zrealizować sensownie? Jak można sklonować określone wiersze i nie
    mogąc określić z góry ich id wyliczyć tą cenę brutto?
    Może ktoś ma jakiś pomysł? Może ktoś spotkał sie z takim problem i coś
    podpowie. Będę dozgonnie wdzięczny.
    A niżej kod który sobie wystukałem aby obliczyć dla jednego z góry wiadomego
    wiersza.

    $('#rate_int').live('change',function(){
    var vat_val = $('#rate_int').val();
    var netto = $('#cena_netto').val();

    if(netto == ''){
    alert("Musisz podać cenę netto!");
    }else{
    if($('#cena_netto').val().match('^[0-9\.]+$')){
    var brutto = (((parseFloat(vat_val) * parseFloat(netto))/100) +
    parseFloat(netto)).toFixed(2);

    $('#cena_brutto').val(brutto);
    var brutto2 = $('#cena_brutto').val();
    if(brutto2 == 'NaN'){
    $('#rate_int').val('');
    $('#cena_netto').val('');
    $('#cena_brutto').val('');
    alert("Wartość netto musi być wartością liczbową!");

    }
    }else{
    alert("Wartość netto musi być wartością liczbową!");
    }
    }
    });

    $('#cena_netto').live('change',function(){
    var vat_val = $('#rate_int').val();
    if(vat_val != ''){
    var netto = $('#cena_netto').val();
    var brutto = (((parseFloat(vat_val) * parseFloat(netto))/100) +
    parseFloat(netto)).toFixed(2);
    if($('#cena_netto').val().match('^[0-9\.]+$')){
    $('#cena_brutto').val(brutto);
    var brutto2 = $('#cena_brutto').val();
    if(brutto2 == 'NaN'){
    $('#rate_int').val('');
    $('#cena_netto').val('');
    $('#cena_brutto').val('');
    alert("Wartość netto musi być wartością liczbową!");
    }
    }else{
    alert("Wartość netto musi być wartością liczbową!");
    }
    }
    });


    pozdrawiam
    Sławek


  • 2. Data: 2012-03-20 11:06:09
    Temat: Re: Jak to rozwiązać?
    Od: TOUDIdel <t...@o...pl>

    W dniu 20.03.2012 10:30, S pisze:
    > Problem jednak w tym, że muszę to zrealizować też tak, że użytkownik
    > może dodawać dowolną ilość wierszy z polami netto, vat, brutto i dla
    > każdego z nich niezależnie oczywiście musi być wyliczona ta wartość
    > brutto w zależności od podanej wartości netto i wybranej stawki VAT.
    > Jak to zrealizować sensownie? Jak można sklonować określone wiersze i
    > nie mogąc określić z góry ich id wyliczyć tą cenę brutto?

    pseudo-JQuery-kod:

    $(".netto").each(function(){
    $(this).next(".brutto").val($(this).val() * $(this).next(".vat").val())
    })


  • 3. Data: 2012-03-20 11:14:27
    Temat: Re: Jak to rozwiązać?
    Od: "S" <a...@w...pl>


    Użytkownik "TOUDIdel" napisał w wiadomości grup
    dyskusyjnych:4f6864a6$0$1271$6...@n...neostrada
    .pl...

    W dniu 20.03.2012 10:30, S pisze:
    > Problem jednak w tym, że muszę to zrealizować też tak, że użytkownik
    > może dodawać dowolną ilość wierszy z polami netto, vat, brutto i dla
    > każdego z nich niezależnie oczywiście musi być wyliczona ta wartość
    > brutto w zależności od podanej wartości netto i wybranej stawki VAT.
    > Jak to zrealizować sensownie? Jak można sklonować określone wiersze i
    > nie mogąc określić z góry ich id wyliczyć tą cenę brutto?

    >pseudo-JQuery-kod:

    >$(".netto").each(function(){
    >$(this).next(".brutto").val($(this).val() * $(this).next(".vat").val())
    >})

    Wielkie dzięki. Czyli po prostu w pętli funkcja next zczyta mi każdą wartość
    i tylko zamiast id to ma być class (bo jak wiadomo na stronie nie może się
    powtórzyć to samo id) A wiersz z tymi polami formularza to mogę dodawać
    sobie przez .clone()? No i takie małe pytanie czy to mi policzy raz czy już
    dla powiedzmy dodanych 3 wierszy będzie liczył dla każdego osobno?
    Jeszcze raz wielkie dzięki za pomoc

    pozdrawiam
    Sławek


  • 4. Data: 2012-03-20 12:20:35
    Temat: Re: Jak to rozwiązać?
    Od: TOUDIdel <t...@o...pl>

    W dniu 20.03.2012 12:14, S pisze:
    > Wielkie dzięki. Czyli po prostu w pętli funkcja next zczyta mi każdą
    > wartość i tylko zamiast id to ma być class (bo jak wiadomo na stronie
    > nie może się powtórzyć to samo id) A wiersz z tymi polami formularza to
    > mogę dodawać sobie przez .clone()? No i takie małe pytanie czy to mi
    > policzy raz czy już dla powiedzmy dodanych 3 wierszy będzie liczył dla
    > każdego osobno?

    Abstrahując czy class czy id to mało istotne (ważne, żeby selectorem
    znaleźć to co chcesz policzyć).

    Racja, że id nie powinno się powielać, bo jest to proszenie się o problemy.

    Liczyć będzie osobno, czyli dokładnie to, co będzie wpisane, to policzy.
    Jak w każdym z wierszy będą inne kwoty, to wyliczy też inne.

    td


  • 5. Data: 2012-03-20 14:52:55
    Temat: Re: Jak to rozwiązać?
    Od: "S" <a...@w...pl>


    Użytkownik "TOUDIdel" napisał w wiadomości grup
    dyskusyjnych:4f687617$0$26703$6...@n...neostrad
    a.pl...

    W dniu 20.03.2012 12:14, S pisze:
    > Wielkie dzięki. Czyli po prostu w pętli funkcja next zczyta mi każdą
    > wartość i tylko zamiast id to ma być class (bo jak wiadomo na stronie
    > nie może się powtórzyć to samo id) A wiersz z tymi polami formularza to
    > mogę dodawać sobie przez .clone()? No i takie małe pytanie czy to mi
    > policzy raz czy już dla powiedzmy dodanych 3 wierszy będzie liczył dla
    > każdego osobno?

    >Abstrahując czy class czy id to mało istotne (ważne, żeby selectorem
    >znaleźć to co chcesz policzyć).

    >Racja, że id nie powinno się powielać, bo jest to proszenie się o problemy.

    >Liczyć będzie osobno, czyli dokładnie to, co będzie wpisane, to policzy.
    >Jak w każdym z wierszy będą inne kwoty, to wyliczy też inne.

    :( Generalnie działa tylko nie chce nadać wartości inputowi

    Już nawet na wydrę próbowałem nadać wartość temu polu

    $(this).next('.cena_brutto').val(1222);

    i nic, pole pozostaje puste:(

    Na pętli ładnie zczytuje wartości poszczególnych inputów no ale wartości
    wrzucić nie chce w to pole.

    pozdrawiam
    Sławek


  • 6. Data: 2012-03-20 20:05:05
    Temat: Re: Jak to rozwiązać?
    Od: Borys Pogoreło <b...@p...edu.leszno>

    Dnia Tue, 20 Mar 2012 15:52:55 +0100, S napisał(a):

    > Na pętli ładnie zczytuje wartości poszczególnych inputów no ale wartości
    > wrzucić nie chce w to pole.

    .attr('value', 'wartość')

    Pamiętaj o zaokrąglaniu.

    --
    Borys Pogoreło
    borys(#)leszno,edu,pl


  • 7. Data: 2012-03-20 21:06:08
    Temat: Re: Jak to rozwiązać?
    Od: "S" <a...@w...pl>


    REGON: 080304479
    Użytkownik "BorysPogoreło" napisał w wiadomości grup
    dyskusyjnych:ba61l7wrtrxp.6j1d71w3s9hj$....@4...n
    et...

    Dnia Tue, 20 Mar 2012 15:52:55 +0100, S napisał(a):

    > Na pętli ładnie zczytuje wartości poszczególnych inputów no ale wartości
    > wrzucić nie chce w to pole.

    > .attr('value', 'wartość')

    >Pamiętaj o zaokrąglaniu.

    >--
    >Borys Pogoreło
    >borys(#)leszno,edu,pl

    Niestety nie działa tak też. Nie wiem co krzaczę. Poniżej link, można to
    zobaczyć. Oczywiście roboczo przypisałem jakąś wartość do brutto aby tylko
    sprawdzić czy wstawia
    http://jsfiddle.net/sXL2b/48/


    pozdrawiam
    Sławek


  • 8. Data: 2012-03-20 22:41:20
    Temat: Re: Jak to rozwiązać?
    Od: Herr <s...@s...out.there>

    S wrote:

    >
    > REGON: 080304479
    > Użytkownik "BorysPogoreło" napisał w wiadomości grup
    > dyskusyjnych:ba61l7wrtrxp.6j1d71w3s9hj$....@4...n
    et...
    >
    > Dnia Tue, 20 Mar 2012 15:52:55 +0100, S napisał(a):
    >
    > > Na pętli ładnie zczytuje wartości poszczególnych inputów no ale wartości
    > > wrzucić nie chce w to pole.
    >
    > > .attr('value', 'wartość')
    >
    > >Pamiętaj o zaokrąglaniu.
    >
    > >--
    > >Borys Pogoreło
    > >borys(#)leszno,edu,pl
    >
    > Niestety nie działa tak też. Nie wiem co krzaczę. Poniżej link, można to
    > zobaczyć. Oczywiście roboczo przypisałem jakąś wartość do brutto aby tylko
    > sprawdzić czy wstawia
    > http://jsfiddle.net/sXL2b/48/


    Na szybko:

    zamień ostatnią linijkę funkcji podpinanej pod zdarzenie "change" dla
    każdego inputa o klasie ".cena_netto_dostawa"
    ( $(".cena_netto_dostawa").each()... )

    na:

    $(this).closest('tr').find('input.cena_brutto_dostaw
    a').val(brutto);


    czyli:
    - dla bieżącego elementu (input) znajdź, poruszając się w górę drzewa
    DOM, najbliższy element TR
    - dla znalezionego TR znajdź, poruszając się w dół drzewa DOM, input
    posiadający klasę "cena_brutto_dostawa"
    - jako wartość znalezionego inputa wstaw zawartość zmiennej brutto




  • 9. Data: 2012-03-20 22:45:10
    Temat: Re: Jak to rozwiązać?
    Od: Borys Pogoreło <b...@p...edu.leszno>

    Dnia Tue, 20 Mar 2012 22:06:08 +0100, S napisał(a):

    > Niestety nie działa tak też. Nie wiem co krzaczę. Poniżej link, można to
    > zobaczyć. Oczywiście roboczo przypisałem jakąś wartość do brutto aby tylko
    > sprawdzić czy wstawia

    Pamiętaj też, że .next() złapie pierwszy *kolejny* element. Zapewne
    chciałeś użyć .nextAll().

    --
    Borys Pogoreło
    borys(#)leszno,edu,pl


  • 10. Data: 2012-03-20 23:18:04
    Temat: Re: Jak to rozwiązać?
    Od: "S" <a...@w...pl>


    > >Borys Pogoreło
    > >borys(#)leszno,edu,pl
    >
    > Niestety nie działa tak też. Nie wiem co krzaczę. Poniżej link, można to
    > zobaczyć. Oczywiście roboczo przypisałem jakąś wartość do brutto aby tylko
    > sprawdzić czy wstawia
    > http://jsfiddle.net/sXL2b/48/


    >Na szybko:

    >zamień ostatnią linijkę funkcji podpinanej pod zdarzenie "change" dla
    >każdego inputa o klasie ".cena_netto_dostawa"
    >( $(".cena_netto_dostawa").each()... )
    >
    >na:
    >
    >$(this).closest('tr').find('input.cena_brutto_dosta
    wa').val(brutto);
    >
    >
    >czyli:
    >- dla bieżącego elementu (input) znajdź, poruszając się w górę drzewa
    >DOM, najbliższy element TR
    >- dla znalezionego TR znajdź, poruszając się w dół drzewa DOM, input
    >posiadający klasę "cena_brutto_dostawa"
    >- jako wartość znalezionego inputa wstaw zawartość zmiennej brutto

    Super! To działa:)
    Wielkie dzięki.
    To teraz mogę dalej to oprogramowywać:)
    Bo rozumiem że według tej filozofii pobiorę sobie tez i wartość a również
    będę mógł wykonywać inne metody na tych wybranych elementach bo kluczowe tu
    jest $(this).closest('tr').find()

    pozdrawiam
    Sławek

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: