Mam taki oto kod java script:
Kod
<script type="text/javascript">
<!-- <![CDATA[
function czydataistnieje(dzien, miesiac, rok) {
var miesiac = miesiac-1;
var d = new Date(rok,miesiac,dzien);
if (dzien==d.getDate() && miesiac==d.getMonth() && rok==d.getFullYear())
return true;
else
return false
}
function sprawdz(f) {
var data = new Date();
var m = data.getMonth()+1;
var d = data.getDate();
var r = data.getFullYear();
var dzisiaj = ""+r+((m<10)?"0":"")+m+((d<10)?"0":"")+d;
var pr=f.rok[f.rok.selectedIndex].value;
var pm=f.miesiac[f.miesiac.selectedIndex].value;
var pd=f.dzien[f.dzien.selectedIndex].value;
var wybrany=""+pr+((pm<10)?"0":"")+pm+((pd<10)?"0":"")+pd;
var blad=0;
if (dzisiaj>wybrany) {
blad++;
alert("Wybrano datę z przeszłości!");
} else if (!czydataistnieje(pd,pm,pr)) {
blad++;
alert("Wybrano datę, która nie istnieje!");
}
if (blad>0) {
f.rok.options[r-f.rok[0].value].selected = true;
f.miesiac.options[m-1].selected = true;
f.dzien.options[d-1].selected = true;
}
}
// ]]> -->
</script>
<!-- <![CDATA[
function czydataistnieje(dzien, miesiac, rok) {
var miesiac = miesiac-1;
var d = new Date(rok,miesiac,dzien);
if (dzien==d.getDate() && miesiac==d.getMonth() && rok==d.getFullYear())
return true;
else
return false
}
function sprawdz(f) {
var data = new Date();
var m = data.getMonth()+1;
var d = data.getDate();
var r = data.getFullYear();
var dzisiaj = ""+r+((m<10)?"0":"")+m+((d<10)?"0":"")+d;
var pr=f.rok[f.rok.selectedIndex].value;
var pm=f.miesiac[f.miesiac.selectedIndex].value;
var pd=f.dzien[f.dzien.selectedIndex].value;
var wybrany=""+pr+((pm<10)?"0":"")+pm+((pd<10)?"0":"")+pd;
var blad=0;
if (dzisiaj>wybrany) {
blad++;
alert("Wybrano datę z przeszłości!");
} else if (!czydataistnieje(pd,pm,pr)) {
blad++;
alert("Wybrano datę, która nie istnieje!");
}
if (blad>0) {
f.rok.options[r-f.rok[0].value].selected = true;
f.miesiac.options[m-1].selected = true;
f.dzien.options[d-1].selected = true;
}
}
// ]]> -->
</script>
Skrypt sprawdza czy użytkownik prawidłowo wybrał datę z list (rok, miesiąc, dzień), jeżeli wybrał datę z przeszłości lub datę która nie istnieje jest o tym informowany komunikatem.
Chciałbym zezwolić na podanie daty z jednym dniem wstecz, ale nie wiem jak to zrobić...
Samo odjęcie jednego dnia:
Kod
var dzisiaj = (''+r+((m<10)?'0':'')+m+((d<10)?'0':'')+d)-1;
jest dobre ale tylko w trakcie miesiąca, problem zaczyna się kiedy jest pierwszy dzień nowego miesiąca i trzeba cofnąć się do ostatniego dnia poprzedniego miesiąca bo skrypt nie pozwala cofnąć się o miesiąc wstecz... trzeba byłoby zezwolić na cofanie się o dobę od całej daty, ale nie mam pojęcia jak to zrobić.
Z góry dziękuję za pomoc.
Pozdrawiam
Arti