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.
datapicker sprawdzenie daty
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 9012
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 :)
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 9012
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
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 9012
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 12
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.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Piwnica
- Postów: 7697
a może spróbuj datapicker.js, bootstrap z tego korzysta i działa ok
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 9012
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 12
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.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 12
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?
- Rejestracja: dni
- Ostatnio: dni
https://www.unixtimestamp.com/
inputa to sobie zamien na type date