Autor Zpráva
Hapipo
Profil
Ahoj,
chtěl jsem se zeptat, jak nastavím ve vstupu <input type="date"> minimální datum na zítřek, aby dnešek a předchozí dny nešly zvolit.

Díky
lionel messi
Profil
Hapipo:

Ak ti stačí primitívna valdiácia v prehliadačoch, tak HTML atribúty min a max pre daný input. Pozri si prvú ukážku na MDN. Samozrejme, kvôli nespoľahlivosti potrebuješ aj validáciu na serverovej strane.
Hapipo
Profil
lionel messi:
Asi si nerozumíme, mám tenhle script, a když si rozbalím kalendář v inputu, tak prosvícené jsou data od dneška po nekonečno. Já jen potřebuji, aby to bylo od zítra po nekonečno.

webshims.setOptions('forms-ext', {
    replaceUI: 'auto',
    types: 'date'
});
webshims.polyfill('forms forms-ext');

$(function(){
    $('[type="date"].min-today').prop('min', function(){
        return new Date().toJSON().split('T')[0];
    });
});

lionel messi
Profil
Hapipo:

Ospravedlňujem sa, nevidel som kontext, na všeobecnú otázku som dal všeobecnú odpoveď.

Ide o problém s prioritou operátorov, správne je: return (new Date()).toJSON().split('T')[0];

Moje znalosti JS sú dosť chatrné, takže to, žiaľ, nedokážem dostatočne dobre vysvetliť.
Kajman
Profil
return new Date(new Date().getTime() + 24*60*60*1000).toJSON().split('T')[0];
Radek9
Profil
Kajman:
Tohle je takové trochu násilné řešení. Selže v případech blízkých půlnoci, pokud se v následujícím dni ubírá hodina (při změně na letní čas) nebo v aktuálním přidává (při změně na standardní čas). Např. 28. března 2020 ve 23:30 by to vrátilo až 30. března. Čistší je to udělat takto:
var date = new Date();
date.setDate(date.getDate() + 1);
return date.toJSON().split('T')[0];

Dalším problémem je, že toJSON() vrací ISO date, který ignoruje časová pásma. Vše převádí do GMT. Což konkrétně v našem pásmu může znamenat posun o 1 nebo 2 hodiny. Takže je ještě lepší to udělat takhle:
return date.getFullYear() + '-' + String(101 + date.getMonth()).slice(1) + '-' + String(100 + date.getDate()).slice(1);
Kajman
Profil
Radek9:
Ano. Ale tipuji, že ke správnému fungování by stejně měl uživatel vybírat datum dle času serveru než dle času na svém počítači.
Hapipo
Profil
Radek9:
Zkouším se to vložit, ale vůbec mi to nějak nereaguje.
Úkázka

Díky
Kajman
Profil
Chybí tam první dva řádky s definicí a výpočtem promenné date.
Hapipo
Profil
Už mi to funguje v jsfiddle, ale při pokusech to vložit do kódu na webu, tak nefunguje. Odkazuji na jQuery 3.3.1 a script jsem je pokoušel vložit jak do hlavy, tak k html, ale nic

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