Toon posts:

[HTML] Datums invoeren

Pagina: 1
Acties:
  • 49 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo mede tweakers,
In mijn intranet applicatie moeten er datums ingevult worden. Bijv. op welke datum het gebeurt is.
Er zijn 2 manieren (die ik zelf al gevonden heb).

1.
Een gewoon edit vakje waarin je de datum kunt typen. zoals bijv. 12-5-2002
Maar nu is het probleem dat het persee zo moet zijn ingevult en niet 12/5/2002

2.
3 dropdown menutjes met in de 1e de dagen, de 2e de maanden en de 3e de jaren.


Welke manier zouden jullie kiezen?
Ook wil ik voordat je naar de volgende pagina gaat dat er gecontroleerd wordt (met JavaScript) of de datum goed is ingevult,
ik heb al zoiets van (in mijn form) onsubmit="return CheckForm()" en in de procedure worden de form waarden gecontrolleerd.
Alleen nu moet ik daar die datum in controleren, maar weet niet zo goed hoe ik dat moet doen.
Heeft iemand een oplossing?

De "programmeer taal" die ik gebruik is ASP.

Alvast bedankt.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Heb ik toevallig laatst een mooi javascriptje voor gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
FV_DATE = /^\d{1,2}-\d{1,2}-(\d{1}|\d{2}|\d{4})$/;
var checkyear;
var checkyearstring;
var mydate = new Date();
var thisday = mydate.getDate();
var thismonth = mydate.getMonth() + 1;
var thisyear = mydate.getYear();
if (thisyear < 1000) thisyear += 1900;
var today = thisyear * 10000 + thismonth * 100 + thisday;

function validdate(date) {

  var daysinmonth = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

  if (!date.match(FV_DATE)) return false;
  var date_array = date.split('-');
  date_day = parseInt(date_array[0], 10);
  date_month = parseInt(date_array[1], 10) - 1;
  date_year = parseInt(date_array[2], 10);
  if (date_month > 11 || date_month < 0) return false;
  if (date_day > daysinmonth[date_month]) return false;
  if (date_year > 99 && date_year < 1900) return false;
  if (date_year < 20) date_year += 2000;
  if (date_year < 100) date_year += 1900;

  if (date_month == 1 && date_day == 29) {

    if (date_year % 100 == 0 && date_year % 400 != 0) return false;

    if (date_year % 4 != 0) return false;

  }

  checkyear = date_year * 10000 + (date_month + 1) * 100 + date_day;
  var notate = checkyear + '';
  checkyearstring = notate.substring(6, 8) + '-' + notate.substring(4, 6) + '-' + notate.substring(0, 4);

  return true;

}

Zo te gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function CheckForm() {

  if (!validdate(document.forms['inschrijving'].elements['geboortedatum'].value)) {

    alert('ongeldige datum!');
    return false;

  }

  if (checkyear > today) {

    alert('datum moet in het verleden liggen');
    return false');

  }

  document.forms['inschrijving'].elements['geboortedatum'].value = checkyearstring;

  return true;

}

suc6!

Intentionally left blank


Verwijderd

Topicstarter
Hey, hartstikke bedankt.
het ziet er netjes uit :)

Ik zal het eens proberen

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Deze:
code:
1
if (date_year > 99 && date_year < 1900) return false;

Kan je weghalen als datums ook van voor 1900 mogen zijn.
Er zit een aanname in dat als een jaartal maar 1 of 2 cijfers heeft dat het dan 20xx is als xx < 20 en anders 19xx.
Hij geeft ook een universele presentatie van de datum terug; bijvoorbeeld 2-2-2 wordt 02-02-2002.
Met checkyear kan je checken tegenover andere datums omdat dat numeriek in yyyymmdd formaat wordt teruggegeven :)

Intentionally left blank


Verwijderd

Topicstarter
OK, heel mooi.

Alleen die globale variabele "checkYear" en "checkYearString"
zitten me niet helemaal lekker.

Maar die fuctie zal ik wel niet gebruiken.
Er hoeven alleen datums worden opgeslagen
en er moet op gezocht kunnen worden.

Maar hartstikke bedankt

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

[topic=397053/1/100]

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.