Witam,

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>


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