Autor | Zpráva | ||
---|---|---|---|
rew Profil |
#1 · Zasláno: 8. 2. 2015, 17:49:48
Dobrý den,
vytvořil jsem si dvě textová formulářová pole pro datum, která pomocí javascriptu testuji na správnost zadaného data (dd.mm.rrrr). Toto mi funguje výborně. Ale mám problém v tom, že potřebuji, aby datum prvního pole byl vždy menší než datum v zadaném druhém poli. Tedy, aby uživatel nezadal například 1P: 20.2.2015 2P: 19.1.2015. Aby jej to upozornilo a neumožnilo odeslat formulář. Zkoušel jsem něco jako: if(document.forms["formular"]["datum_od"].value <= document.forms["formular"]["datum_do"].value) ale nefunguje regulerně. Datum se vkládá ve tvaru dd.mm.rrrr Díky |
||
_es Profil |
#2 · Zasláno: 8. 2. 2015, 17:57:11
rew:
„pomocí javascriptu testuji na správnost zadaného data“ A testuješ to ako? Predsa keď vieš otestovať platnosť dátumu, tak snáď vieš aj porovnať, ktorý dátum z dvoch je skorší. |
||
rew Profil |
#3 · Zasláno: 8. 2. 2015, 18:05:21
_es:
Testuji oba datumy tímto, a tím nezjistím, který je větší. function kontrola_data(value) { if(value == "") return false; var datum_pole = value.split("."); if(datum_pole.length != 3) return false; var dt = new Date(datum_pole[2], datum_pole[1]-1, datum_pole[0]); if(dt.getDate() != datum_pole[0]) return false; if(dt.getMonth()+1 != datum_pole[1]) return false; return true; } |
||
_es Profil |
#4 · Zasláno: 8. 2. 2015, 18:52:38
[#3] rew:
V uvedenej funkcii je dt.getTime() počet milisekúnd od 1.1.1970 UTC - to by ti snáď malo stačiť.
|
||
rew Profil |
#5 · Zasláno: 8. 2. 2015, 21:02:58
_es:
Nevím si už rady, zkoušel jsem všechno možné, ale nejde mi přenést výsledek getTime mimo tuto funkci, abych to mohl porovnat. Můj celý kód javascriptu je: <script type="text/javascript"> // test validace zadaného data function test_data() { var datum_od = kontrola_data(document.forms["formular"]["datum_od"].value); var datum_do = kontrola_data(document.forms["formular"]["datum_do"].value); if (datum_od == true && datum_do == true) { if(document.forms["formular"]["datum_od"].value <= document.forms["formular"]["datum_do"].value) { return true; } else { alert('UPOZORNĚNÍ: Opravte datum, datum od je vyšší než datum do!'); return false; } } else { alert('UPOZORNĚNÍ: Chybný formát data (dd.mm.rrrr) nebo datum přestupného roku!'); return false; } } function kontrola_data(value) { if(value == "") return false; var datum_pole = value.split("."); if(datum_pole.length != 3) return false; var dt = new Date(datum_pole[2], datum_pole[1]-1, datum_pole[0]); if(dt.getDate() != datum_pole[0]) return false; if(dt.getMonth()+1 != datum_pole[1]) return false; // pomocna = dt.getTime(); // alert(pomocna); return true; } </script> Řádek 11 bych chtěl upravit na regulérní podmínku, ale prostě se i nedaří dostat počet ms z té druhé funkce. |
||
_es Profil |
#6 · Zasláno: 8. 2. 2015, 21:28:08
rew:
Všetky potrebné rady predsa máš - ako z dátumov dostať čísla a tie ti stačí len porovnať. Veď si ani metódu getTime nepoužil, tak čo si „skúšal“? Kde„mimo funkciu“ to chceš „prenášať“, prečo všetky kontroly nespravíš v jednej funkcii? V tvojom kóde máš aj odkazy na dokumentáciu Mozilly.
|
||
rew Profil |
#7 · Zasláno: 8. 2. 2015, 22:16:07
_es:
Možná to špatně popisuji, ale používám funkci kontrola_data pro kontrolu datumu, jestli je korektní, mohl bych provést třeba v 10 formulářích a budu mít furt jen jednu funkci. Když použiji v této funkci, která je volána z jiné funkce (test_data) get.Time() a následně aletr, tak mi vypíše počet ms. To je super to potřebuji, ale jakmile provede kontrolu dalšího data, tak se vypíše zase jiný údaj, taky to co chcil. Ale teď nevím, jakým způsobem bych dostal na řásek č. 11 do podmínky tyto dvě čísla zastupující ms k porovnání. Zkoušel jsem použít dvě funkce pro kontrolu data 1 a 2. Když použiji proměnné ve funkci kontrola_data_1 a kontrolo_data_2, tak ve funkci test_data tu proměnnou již nemám. Potřebuji ji jen nějakým způsobem přenést. Kód mám defakto celý hotový, jen mi chybí tady toto. Pokud bych to měl udělat v jedné funkci, tak se mi to nedařilo. Možná kdyby jsi mi pomohl sem něco napsat. Díky |
||
_es Profil |
#8 · Zasláno: 8. 2. 2015, 22:24:22
[#7] rew:
Ak skontroluješ platnosť dátumu, tak potrebuješ vždy aj skontrolovať, či sú dátumy v správnom poradí, tak to sprav všetko v jednej funkcii a volaj ju pri zmene jedného alebo druhého inputu. |
||
rew Profil |
#9 · Zasláno: 10. 2. 2015, 20:53:54
Tak nakonec jsem to vyřešil úplně jinak, zvolil jsem formu výběrového menu, a vytvořil test na přestupný rok a regulérní počty dní v měsíci.
|
||
Časová prodleva: 9 let
|
0