Witam dopiero zaczynam przygodę z JavaScript mam problem z wykonaniem zadania. Chciałbym aby po wybraniu daty wydarzyły się dwa zdarzenia. Jeżeli użytkownik wybierze datę w datapicker, będzie ona starsza od dzisiejszej daty o 3 lata pojawi się div, który będzie zawierał jakiś element. W przypadku kiedy data będzie mieściła się w przedziale do 3 lat pojawi się div z innym zdarzeniem. Kurcze nie wiem jak się do tego zabrać. Czy ktoś pomógłby ogarnąć sprawę. Dzięki za pomoc. Pozdrawiam.
Wrzuć na jsfiddle.net szkielet tego, co masz (bo zakładam, że poza napisaniem posta na forum zrobiłeś coś jeszcze) - chętnie pomożemy :)
cerrato napisał(a):
Wrzuć na jsfiddle.net szkielet tego, co masz (bo zakładam, że poza napisaniem posta na forum zrobiłeś coś jeszcze) - chętnie pomożemy :)
Zrobiłem coś takiego, ale pewnie nie ma to nic wspólnego z tym co chcę osiągnąć. Na razie sprawdzam to w alertach, później chciałbym dodać div. Czy jest to dobry kierunek? :)
https://codepen.io/zafon/pen/PavQgp
A czemu nie zrobiłeś tego w oparciu o <input type="date">
?
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date
https://www.w3schools.com/tags/att_input_type_date.asp
W przykładzie powyżej zapomniałem dodać "direction: false," co blokuje daty przyszłe. Nie wiedziałem, że w type="date" możliwe jest blokowanie daty przyszłej.
No to po pierwsze - zrób nowego (albo uaktualnij tamtego codepen'a) tak, aby zrobić to w oparciu o <input type="date">
oraz określić zakres dopuszczalnych dat, a następnie podeślij link.
A po drugie - skoro masz konto, to czemu część postów dajesz z konta, a część jako anonim (bo zakładam, że wszystkie są pisane przez Ciebie)? Pisz jako Ty - będzie wtedy porządniej i czytelniej.
cerrato napisał(a):
No to po pierwsze - zrób nowego (albo uaktualnij tamtego codepen'a) tak, aby zrobić to w oparciu o
<input type="date">
oraz określić zakres dopuszczalnych dat, a następnie podeślij link.
A po drugie - skoro masz konto, to czemu część postów dajesz z konta, a część jako anonim (bo zakładam, że wszystkie są pisane przez Ciebie)? Pisz jako Ty - będzie wtedy porządniej i czytelniej.
Przepraszam, nie spojrzałem że zostałem wylogowany. Mój błąd. Chciałbym aby nie było dopuszczalnych zakresów dat, tylko użytkownik mógł wybrać datę np 1995.02.13 i pokazał się allert który będzie sprawdzał, że ta data została przekroczona o 3 lata od dnia dzisiejszego.
a może spróbuj datapicker.js, bootstrap z tego korzysta i działa ok
Nie musisz określać zakresów, ale sam wcześniej napisałeś Nie wiedziałem, że w type="date" możliwe jest blokowanie daty przyszłej
- ja to zrozumiałem tak, że musiałeś korzystać z jakichś dodatkowych skryptów/bibliotek, bo byłeś przekonany, że wbudowane w przeglądarki mechanizmy tego nie mają. Jeśli nie jest Ci to potrzebne do niczego, to przecież nie musisz dodawać opcji ograniczających zakres.
cerrato napisał(a):
Nie musisz określać zakresów, ale sam wcześniej napisałeś
Nie wiedziałem, że w type="date" możliwe jest blokowanie daty przyszłej
- ja to zrozumiałem tak, że musiałeś korzystać z jakichś dodatkowych skryptów/bibliotek, bo byłeś przekonany, że wbudowane w przeglądarki mechanizmy tego nie mają. Jeśli nie jest Ci to potrzebne do niczego, to przecież nie musisz dodawać opcji ograniczających zakres.
Co należy dodać aby po przekroczeniu daty o 3 lata wstecz zwrócił komunikat " data została przekroczona o 3 lata "? .Poniższy kod sprawdzi czy dzień dzisiejszy jest wcześniejszy i zwraca komunikat "data dzisiejsza" lub "data starsza"
onSelect: function(data) {
var dzisiaj = new Date(new Date().getFullYear(), new Date().getMonth(),new Date().getDate());
var selekt = new Date(data);
if (dzisiaj < selekt) {
alert('data dzisiejsza');
} else {
alert('data starsza');
}
}
Z góry dziękuje za jakieś przykłady, sugestie.
przerob to co masz w inpucie na timestamp -> dodaj 3 lata -> sprawdz czy timestamp jest mniejszy niz Date.now()
let d = new Date("2010-03-03")
undefined
d.getTime()
1267574400000
Date.now()
1530786687634
stivens napisał(a):
przerob to co masz w inpucie na timestamp -> dodaj 3 lata -> sprawdz czy timestamp jest mniejszy niz Date.now()
let d = new Date("2010-03-03") undefined d.getTime() 1267574400000 Date.now() 1530786687634
Hej nie bardzo wiem jak powinno to wyglądać w mój input wygląda tak <input id="datepicker" class="form-control" type="text" placeholder="Wybierz datę">
muszę dodać parametr name=timestamp?
https://www.unixtimestamp.com/
inputa to sobie zamien na type date