Autor Zpráva
Honzin
Profil *
Pro zadávání datumu do formuláře mám tenhle šikovný skript:


<html>
<head>

</head>
<body>

<script LANGUAGE="JavaScript">

var _D = new Date();
var _d = 1000 * 60 * 60 * 24;
function moveDate(_v,name)
{
if(_v==40)
{
_D.setTime(_D.getTime() - _d);
}
else if(_v==38)
{
_D.setTime(_D.getTime() + _d);
}
document.all.name.value=showDate(_D);
}
function showDate(_day)
{
var _return ="";
_return+=(_day.getYear()+1900);
_return+="-"+(_day.getMonth()+1);
_return+="-"+_day.getDate();
return(_return);
}
var _F ='';
_F+='<form name=formular1>';
_F+='<input type=text name=T1 size=10 onkeypress=moveDate(event.keyCode,T1) value="'+showDate(_D)+'">';
_F+='</form>';
document.write(_F); /* show the form with the date in it */
</script>

<BR><center></center>
</body>
</html>


Šikovný je v tom, že změnu data lze provést pomocí šipek nahoru a dolů.
Poradí někdo, jak jednoduše použít tento skript pro více polí s různými jmény u jednoho formuláře?
Honzin
Profil *
Pardon, je tam úprava, ketrá to znefunkčnila. Správně je to takhle:

<html>

<head>
</head>
<body>
<script LANGUAGE="JavaScript">
var _D = new Date(); /* current date - could be set to start at any specific date */
var _d = 1000 * 60 * 60 * 24; /* amount to change date */
function moveDate(_v)
{
if(_v==40)
{
_D.setTime(_D.getTime() - _d);
}
else if(_v==38)
{
_D.setTime(_D.getTime() + _d);
}
document.all.form1.value=showDate(_D);
}
function showDate(_day)
{
var _return ="";
_return+=(_day.getYear()+1900);
_return+="-"+(_day.getMonth()+1);
_return+="-"+_day.getDate();
return(_return);
}
var _F ='';
_F+='<form name=formular1>';
_F+='<input type=text name=form1 onkeypress=moveDate(event.keyCode) value="'+showDate(_D)+'">';
_F+='</form>';
document.write(_F); /* show the form with the date in it */
</script>
<BR><center></center>
</body>
</html>
los
Profil *
Ten skript nie je vôbec šikovný a vo väčšine prehliadačov nefunguje (resp. mne nefungoval dokonca ani v IE). Nebolo by lepšie použiť 3 prvky select vedľa seba (v prvom by boli čísla 1-31, v druhom 1-12 a v treťom napr. nejaké roky)?

Ak chceš predsa len jeden textbox s dátumom yyyy-mm-dd, tak by som použil niečo takéto:
window.onload = function ()

{
var twoDigits = function (text)
{
return (("" + text).length < 2? "0" + text: text);
}

var keypress = function (e)
{
e || (e = window.event);

if (e.keyCode == 40 || e.keyCode == 38)
{
var target = e.target || e.srcElement;
var text = target.value.split ("-");
var date = new Date (text [0], text [1] - 1, text [2]);

if (isNaN (date.getTime ()))
date = new Date ();

date.setHours (e.keyCode == 40? -24: 24);
target.value = [date.getFullYear (), twoDigits (date.getMonth () + 1), twoDigits (date.getDate ())].join ("-");
}
};

for (var i = 0; i < document.forms.length; ++i)
{
var inputs = document.forms [i].elements;

for (var j = 0; j < inputs.length; ++j)
if (inputs [j].type == "text" && inputs [j].className.match (/(^|\s)date(\s|$)/))
inputs [j] [window.opera? "onkeypress": "onkeydown"] = keypress;
}
}


Ten skript pripojíš ku HTML a potom už len textboxom, ktoré sa majú chovať tak, že na šípku hore/dole sa bude zvyšovať/znižovať dátum, dáš triedu date.
<input type="text" class="date" value="2006-10-27" />


Prípadne si to môžeš upraviť, aby sa to chovalo presne ako chceš.
Honzin
Profil *
Není potřeba nic upravovat. Funguje to přesně jak chci. Díky "los".
Honzin
Profil *
Dala by se přidat funkce, která by vypisovala ve stavovém řádku den v týdnu?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0