• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Aktualizacja danych od razu po kliknięciu

Object Storage Arubacloud
0 głosów
126 wizyt
pytanie zadane 6 września 2018 w JavaScript przez Bakr Mądrala (6,850 p.)

Witam,

 

W jaki sposób od razu po kliknięciu aktualizować dane? W tym momencie dane aktualizują się dopiero po kolejnym kliknięciu w element:

document.querySelectorAll('.datepicker--cell-day').forEach(node=> {
        node.addEventListener('mouseup', ()=>{
          let dateStart = $('.input-hours-date-start').val();
          let dateStop = $('.input-hours-date-stop').val()
        //   var dt1 = new Date(dateStart);
        //   var dt2 = new Date(dateStop);
        //   function diff_hours(dt2, dt1)
        //   {


        //    var diff =(dt2.getTime() - dt1.getTime()) / 3600000;
        //    return Math.abs(Math.round(diff));

        //   }


        //  console.log(diff_hours(dt1, dt2));
        moment('06-09-2018 17:09','DD-MM-YYYY HH:mm').toDate()
        var date1, date2;
        // "Jan 1, 2018 08:15:10"
                 date1 = dateStop;
                 date2 = dateStart;

                 var dateDest1 = moment(date1,'DD-MM-YYYY HH:mm').toDate();
                 var dateDest2 = moment(date2,'DD-MM-YYYY HH:mm').toDate();
                //  console.log(dateDest1)
                //  console.log(dateDest2)


                 var res = Math.abs(dateDest2 - dateDest1)/1000;


                 // get minutes
                 var hours = Math.ceil(res / 3600);
                 console.log('Godzin:'+hours);



                 let car_price = $('.select_car_hours').find(":selected").data("price");
                 console.log(car_price);
                 let result = car_price*hours;
                 $('.price-hours').html('<span class="coast">Koszt:</span><span class="calculated-price calculated-price-hours">'+result+'</span><span class="currency">pln</span>');



        // var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
        // var d = moment.duration(ms);

        // console.log(d.days(), d.hours(), d.minutes(), d.seconds());
      })
    })
    })
  })

 

komentarz 6 września 2018 przez ScriptyChris Mędrzec (190,190 p.)
Czy za pierwszym razem callback z 2 linijki jest odpalany? Czy 42 linijka odpowiada za aktualizację, czy inna?
komentarz 6 września 2018 przez Bakr Mądrala (6,850 p.)
Tak, ta linijka odpowiada za pokazywanie aktualizacji.

Jednak działa poprawnie dopiero po kolejnym kliknięciu (1 klik: brak, 2 klik: aktualizacja)
komentarz 6 września 2018 przez Bakr Mądrala (6,850 p.)
PS.

Za pierwszym razem nie odpala się
komentarz 6 września 2018 przez ScriptyChris Mędrzec (190,190 p.)

Za pierwszym razem nie odpala się

Na której przeglądarce to sprawdzasz? Czy za każdym razem klikasz w dokładnie ten sam element w DOM i w takim samym odstępie czasowym puszczasz przycisk? Czy tylko pierwsze kliknięcie nie odpala callback'a, a każde następne już tak? Czy, jeśli zmienisz event na "click", to działa?

komentarz 6 września 2018 przez Bakr Mądrala (6,850 p.)
Przeglądarka: Vivaldi (Chrome)

Nie, klikam w jeden z kilku elementów generowanych automatycznie (dlatego forEach)

Za każdym kolejnym razem funkcja potrzebuje również podwójnego kliknięcia do działania.

Po zmianie na click problem nadal występuje.
komentarz 6 września 2018 przez ScriptyChris Mędrzec (190,190 p.)
Sprawdzałeś na innej przeglądarce? Czy możesz podać minimalną ilość kodu HTML (o ile podany kawałek JS wystarczy), który umożliwi reprodukcję problemu?
komentarz 6 września 2018 przez Bakr Mądrala (6,850 p.)
Uświadomiłem sobie, że w projekcie używana jest biblioteka, która dodaje pickery do pól z datami (one zmieniają wartość w inoucie). Jest mozliwość, żeby sprawdzać, czy wartość pola się zmieniła i dopiero wtedy zbierać wartości?
komentarz 6 września 2018 przez ScriptyChris Mędrzec (190,190 p.)

Jest mozliwość, żeby sprawdzać, czy wartość pola się zmieniła i dopiero wtedy zbierać wartości?

Ze sposobów, które przychodzą mi do głowy (zakładając, że nie zmieniasz kodu biblioteki): nasłuchiwać zdarzenia (jeśli jest jakieś emitowane) lub MutationObserver . Z gorszych, to setTimeout/setInterval, a z "inwazyjnych" - Proxy.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 185 wizyt
0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 13 marca 2017 w JavaScript przez VendE Użytkownik (980 p.)
0 głosów
1 odpowiedź 171 wizyt
pytanie zadane 16 sierpnia 2018 w JavaScript przez Zaqu93 Gaduła (4,850 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...