Autor Zpráva
Hanysek01
Profil *
mam na strance formulař, kde se zadava do textovych poli datum přijezdu a datum odjezdu.
při stisknuti tlačitka odeslat mam udělany js ktery kontroluje zda ty pole nejsou prazdne.

prosim neporadil by mi někdo jak to upravit, aby to kontrolovalo, zda je tam skutečně platny datum a zda je prvni datum větší jak druhé? zkoušel sem datum1>datum2 ale porovnává to jenom dny v datumu.

skript ktery zatim mam a ktery bych potřeboval upravit:

<script language="JavaScript" type="text/javascript">
<!--
var compatible = (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) >= 3 )) || ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4 )) || (navigator.appName == "Opera"));

function Check () {
var X = true;

if ((document.main2['date_from'].value == '') || (document.main2['date_to'].value == '')) {
alert("Musíte vyplnit datum příjezdu a datum odjezdu.");
return false;
}
else {
if (document.main2['date_from'].value > document.main2['date_to'].value) {
alert("Datum není správně.");
return false;
}
else {
return true;}
}
}
</script>

dik za pomoc
peta
Profil
Hanysek01
google.com date javascript example
jakpsatweb - javascript - datum
jakpsatweb - javascript - priklady
http://www.volny.cz/peter.mlich/www.htm#msub8
** javascript-reference.info JS tahak, seznam metod
kliknes na Date a skoci to na obrazek se vsemi funkcemi pro datum.
Nektery prohlizec ma nektere navic, jiny ne. tyhle by meli mit vicemene vsechny.

Datum nejlepe overis tak, ze provedes prevod na datumovy format a pak zpet a musis dostat stejne hodnoty.
Porovnani datumu viz 3ti radek na reference - info
lze porovnavat pouze, pokud mas v ciselnem tvaru.

document.main2['date_from'].value > document.main2['date_to'].value
hezci je:
var f=document.main2;
f['date_from'].value > f['date_to'].value
navic
alert(typeOf(f['date_from'].value));
se dozvis, ze je typu STRING a pak plati zakonitosti pro porovnavani stringu (podle znaku)
a = "12 8 2007";
b = "3 4 2007"
"1xxx"
"3xxx"
1<3, tj a<b, ikdyz ty predpokladas nejake jine zakonitosti :)

kdyz nevis, vypisi si podminky:
var x = (document.main2['date_from'].value > document.main2['date_to'].value) ;
alert(x);
Hanysek01
Profil *
prosim nenapsal by mi někdo jak to rozšiřit at to porovnava i měsice a roky? asi to převest ze stringu na nějake čislo, js vubec neumim. děkuji
peta
Profil
"js vubec neumim"
tak to se bud nauc nebo pockej, treba se najde nekdo ochotny, komu se bude chtit vrtat v tisice radcich nefunkcniho programu... Vzdy tak 1-2 tydny od prvniho zadani se najde nekdo rozumny...

Jinak jsem ti to napsal. Pouzivas tam value, coz je typu string. Typ string se serazuje podle cisla znaku v nem. Ani jinak to nejde
"3xxx", "1xxx"
nelze seradit jinak nez "1xxx", "3xxx" nebo reverzne. Jestli tam mas "13. 5. 2008" "3. 5. 2008", to neni podstatne. v tomto pripade, dvou hodnot, rozhoduje zrovna prvni znak (1 = kod 30hexa), ktery je mensi nez 3 = 33hexa.
V pripade 12.5. 112.5. je opet 112.5. mensi nez 12.5. (prvni cislice je stejna, druha je 1 nebo 2)

Funkce pro prevod datumu na cislo viz odkaz na tu literaturu. Cisla se pak serazuji ciselnym zpusobem. To je to, co potrebujes.
jako dalsi odkaz by mohlo byt:
jakpsatweb - javascript - priklady - datum a cas
jakpsatweb - javascript - datum a cas

Pokud nejses schopen opravit podminku
a>b
na
funkce(a)>funkce(b)
pak je to hold tezky (funkce doplnis nazev prislusne prevodni funkce, netusim v jakem formatu ty datumy pises a kontrolujes.)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0