Avatar billede -thomas- Nybegynder
15. august 2003 - 12:12 Der er 21 kommentarer og
1 løsning

dato i datofelt

Jeg har et readonly text felt med en dato i. Er det muligt at lave et javascript, der lægger en dag til datoen når man trykker + og trækker en fra når man trykker -?
Avatar billede mm12010 Nybegynder
15. august 2003 - 12:18 #1
ssmItems[1]=["Adresser", "adress.asp?Action=Update&AdressID=' + UserID + '", "main"];
Avatar billede mm12010 Nybegynder
15. august 2003 - 12:18 #2
sorry - forkert spg :o)
Avatar billede -thomas- Nybegynder
15. august 2003 - 12:42 #3
Har fundet dette på http://developer.irt.org/script/date.htm. Kan det ikke bruges til et eller andet? Duer ikke selv til javascript...

<script language="JavaScript"><!--
function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

alert(addDays(new Date(),10));
//--></script>
Avatar billede roenving Novice
15. august 2003 - 12:42 #4
Ja, da, (og det kan gøres endnu nemmere hvis vi har en værdi i et skjult felt !-)
Avatar billede roenving Novice
15. august 2003 - 12:43 #5
Ej, det er noget andet end den du har fundet (som også er ganske brugbar -- til noget andet !-)
Avatar billede -thomas- Nybegynder
15. august 2003 - 12:45 #6
Hvorfor en værdi i et skjult felt og hvordan? Feltet er en del af en større form.
Avatar billede roenving Novice
15. august 2003 - 12:57 #7
Den kræver at tallene i datoen står som de gør, men ellers skulle den bare du !-)

<html><head><title></title>
<script language="javascript" type="text/javascript">
function changeDate(n,fld){
v = fld.value;
st = new Date(+v.substring(6),(+v.substring(3,5)-1),+v.substring(0,2));
ny = new Date(st.getTime()+n*24*60*60*1000);
d = (ny.getDate()>9)?ny.getDate():"0"+ny.getDate();
m = (ny.getMonth()>8)?ny.getMonth()+1:"0"+(ny.getMonth()+1);

fld.value = d+"-"+m+"-"+ny.getFullYear();
}
</script>
</head>

<body onresize onload>
<br>
<form id="minForm" name="minForm">
<br>
<input name="dato" type="text" value="15-08-2003" disabled>&nbsp;&nbsp;<input type="button" value=" + " onclick="changeDate(1,this.form.dato);">&nbsp;&nbsp;<input type="button" value=" - " onclick="changeDate(-1,this.form.dato);">
<br>
</form>
</body>
</html>
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:01 #8
Hej igen, tak for det, men egentlig mente jeg at man trykkede på + og - tasten på keyboardet, når man stod i dato-feltet (som skal være readonly, ikke disabled).
Avatar billede roenving Novice
15. august 2003 - 13:09 #9
-- uff, den var værre ...

Keyboard-events har aldrig været rart at beskæftige sig med, men et øjeblik !-)
Avatar billede roenving Novice
15. august 2003 - 13:10 #10
-- man kan da forøvrigt ikke stå i feltet, hvis det er readonly ?-)
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:11 #11
jo, men ikke hvis det er disabled. Med readonly, kan du bare ikke ændre, godt markere.
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:13 #12
Her kan den i hvert genkende koden for den tast du trykker:

<html><head>
<script language="JavaScript">
<!--
function keyHandler(e)
{
    var pressedKey;
    if (document.all)    { e = window.event; }
    if (document.layers) { pressedKey = e.which; }
    if (document.all)    { pressedKey = e.keyCode; }
    pressedCharacter = String.fromCharCode(pressedKey);
    alert(' Character = ' + pressedCharacter +
          ' [Decimal value = ' + pressedKey + ']');
}
document.onkeypress = keyHandler;
//-->
</script></head>
<body>Press any key on your computer now.</body></html>
Avatar billede roenving Novice
15. august 2003 - 13:13 #13
Markere ??
-- så'r det zq da bedre at have en lille knap ved siden af !-)
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:14 #14
Og ANSI-værdierne for + og - er 43 og 45... men kan bare ikke finde ud af at sætte noget sammen i javascript....
Avatar billede roenving Novice
15. august 2003 - 13:14 #15
Og keypress skal jeg nok finde -- og på elementet, for vi skal jo ikke ahve datoen til at ændre sig, hvis brugeren laver en bindestreg i et eller andet tekst-felt !-)
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:15 #16
Nej for jeg har en knap ved siden af som er en slags dato-vælger.
Man behøver ikke at markere noget i dato-feltet, bare man står i det når man tabber gennem felterne i formularen.
Det gør det lidt nemmere hvis man kan skifte dato uden at bruge dato-vælgeren hver gang.
Avatar billede roenving Novice
15. august 2003 - 13:22 #17
Sådan, så:

<script language="javascript" type="text/javascript">
function changeDate(fld,e){
  var pressedKey;
    if (document.all)    { pressedKey = e.keyCode; }
    else if (document.layers||document.getElementById) { pressedKey = e.which; }
    var pressedCharacter = String.fromCharCode(pressedKey);
    alert(pressedCharacter);
    if(pressedCharacter=="+")n=1;
    else if(pressedCharacter=="-")n=-1;
    else return;
v = fld.value;
st = new Date(+v.substring(6),(+v.substring(3,5)-1),+v.substring(0,2));
ny = new Date(st.getTime()+n*24*60*60*1000);
d = (ny.getDate()>9)?ny.getDate():"0"+ny.getDate();
m = (ny.getMonth()>8)?ny.getMonth()+1:"0"+(ny.getMonth()+1);

fld.value = d+"-"+m+"-"+ny.getFullYear();
}
</script>

<script language="javascript" type="text/javascript" src="tom.js"></script>


<input name="dato" type="text" value="15-08-2003" readonly onkeypress="changeDate(this,event);">

hth
'-)
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:26 #18
Kanon! Tak. Men hvorfor kører den kun til 26. okt?
Avatar billede roenving Novice
15. august 2003 - 13:32 #19
Sommertid !-)
lav denne linje om !o]

st = new Date(+v.substring(6),(+v.substring(3,5)-1),+v.substring(0,2),12,0,0);
Avatar billede roenving Novice
15. august 2003 - 13:33 #20
Der lægges jo kun 24 timer til og det døgn har 25 timer *g*
Avatar billede -thomas- Nybegynder
15. august 2003 - 13:39 #21
Mange tak for hjælpen. En eller anden dag tager jeg mig sammen og lærer javascript :-)
Avatar billede roenving Novice
15. august 2003 - 13:42 #22
-- god idé !-)

-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester