webForumDet fria alternativet

Datum, månad och tid automatiskt i lista?

JavaScript

17 svar · 306 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

När sidan med formuläret laddas vill jag att dagens datum, månad och aktuell tid (för surfarens system) ska vara förvalda i respektive lista. Hur gör man det?

Medlem sedan juli 2003303 inlägg
#2

Hur ska datumet vara formaterat?

Medlem sedan maj 2002821 inlägg
#3

Dagarna ska stå som siffror med en nolla innan om talet är mindre än 9, samma med månaderna. Tiden ska vara i formatet 1300, 1400 osv.

Medlem sedan juni 20004 308 inlägg
#4

Ungefär så här kanske

<form name="myform">
Datum
<select name="datum">
<script type="text/javascript">for(var n=1;n<32;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Månad
<select name="manad" onChange="rebuildManad(this.form);">
<script type="text/javascript">for(var n=1;n<13;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Tid
<select name="tid">
<script type="text/javascript">for(var n=0;n<24;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"00\">"+((n>9)?n:"0"+n)+"00</option>");  }</script>
</select>
</form>
<script type="text/javascript">
function rebuildManad(obj){
	var d=new Date(); d=new Date(d.getFullYear(),obj.manad.selectedIndex+1,0).getDate();
	obj.datum.length=d;
	for(var n=0;n<d;n++){
		obj.datum[n].value=obj.datum[n].text=(n<9)?"0"+(n+1):n+1;
	}
}
document.forms['myform'].elements['datum'].selectedIndex=new Date().getDate()-1;
document.forms['myform'].elements['manad'].selectedIndex=new Date().getMonth();
document.forms['myform'].elements['tid'].selectedIndex=new Date().getHours();
rebuildManad(document.forms['myform']);
</script>
Medlem sedan maj 2002821 inlägg
#5

Ja, varför inte? :) Även om inte alla options skrivs ut (när man tittar i källkoden från webbläsaren) antar jag att det valda värdet går att skicka vidare till en annan sida.

Sen undrar jag över en annan sak. Varför skrivs följande ut (när man tittar i källkoden från webbläsaren) och vad betyder det?

<script language="JavaScript">
<!--

function SymError()
{
  return true;
}

window.onerror = SymError;

//-->
</script>
Medlem sedan juni 20004 308 inlägg
#6

bigsky skrev:

Ja, varför inte? Även om inte alla options skrivs ut (när man tittar i källkoden från webbläsaren) antar jag att det valda värdet går att skicka vidare till en annan sida.

Javisst :)

bigsky skrev:

Varför skrivs följande ut ...

Gör det...? Det är inte någonting som ditt webhotell automatiskt lägger till?

Medlem sedan maj 2002821 inlägg
#7

Nej, det skrivs ut om jag kör det lokalt.

Medlem sedan juni 20004 308 inlägg
#8

Du har möjligen inte Norton Internet Security installerat?

Medlem sedan maj 2002821 inlägg
#9

Jo

Medlem sedan juni 20004 308 inlägg
#10

Där har du boven :) Det är NIS som lägger till det för att förhindra att felmeddelanden visas. Hur man kommit fram till att detta skall göra tillvaron säkrare för surfare är däremot ett mysterium.

Medlem sedan maj 2002821 inlägg
#11

Ok, då spinner vi vidare. Om man har två uppsättningar med datum, månad och tid i varje. Och väljer tex. den 8:e som datum i första uppsättningen, då vill jag att datumet i listen i andra uppsättningen ska ändras till en dag efter valt datum, i detta fall den 9:e. Hur?

Medlem sedan juni 20004 308 inlägg
#12
<form name="myform">
Datum
<select name="datum" onChange="update2(this.form);">
<script type="text/javascript">for(var n=1;n<32;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Månad
<select name="manad" onChange="rebuildManad(this,this.form.datum); update2(this.form);">
<script type="text/javascript">for(var n=1;n<13;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Tid
<select name="tid" onChange="update2(this.form);">
<script type="text/javascript">for(var n=0;n<24;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"00\">"+((n>9)?n:"0"+n)+"00</option>");  }</script>
</select>
<br/>
Datum
<select name="datum2">
<script type="text/javascript">for(var n=1;n<32;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Månad
<select name="manad2" onChange="rebuildManad(this,this.form.datum2);">
<script type="text/javascript">for(var n=1;n<13;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Tid
<select name="tid2">
<script type="text/javascript">for(var n=0;n<24;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"00\">"+((n>9)?n:"0"+n)+"00</option>");  }</script>
</select>

</form>
<script type="text/javascript">
function rebuildManad(mobj,dobj){
	var d=new Date(new Date().getFullYear(),mobj.selectedIndex+1,0).getDate();
	dobj.length=d;
	for(var n=0;n<d;n++){
		dobj[n].value=dobj[n].text=(n<9)?"0"+(n+1):n+1;
	}
}
function update2(obj){
	var d=new Date(new Date().getFullYear(),obj.elements['manad'].selectedIndex,obj.elements['datum'].selectedIndex+2);
	obj.elements['datum2'].length=d.getDate();
	for(var n=0;n<d.getDate();n++){
		obj.elements['datum2'][n].value=obj.elements['datum2'][n].text=(n<9)?"0"+(n+1):n+1;
	}
	obj.elements['datum2'].selectedIndex=d.getDate()-1;
	obj.elements['manad2'].selectedIndex=d.getMonth();
	obj.elements['tid2'].selectedIndex=obj.elements['tid'].selectedIndex;
}
window.onload=function(){
	document.forms['myform'].elements['datum'].selectedIndex=new Date().getDate()-1;
	document.forms['myform'].elements['manad'].selectedIndex=new Date().getMonth();
	document.forms['myform'].elements['tid'].selectedIndex=new Date().getHours();
	rebuildManad(document.forms['myform'].elements['manad'],document.forms['myform'].elements['datum']);
	update2(document.forms['myform']);
}
</script>
Medlem sedan maj 2002821 inlägg
#13

Jo, det glömde jag. Väljer man tex. månad 10 i första månads-listen ska även värdet i den andra månads-listen flyttas fram till samma månad.

Medlem sedan juni 20004 308 inlägg
#14

Umm.... det gör den. (sköts av onchange-eventet och funktionen update2() )

Medlem sedan maj 2002821 inlägg
#15

Ah det gör den ju. Hade kvar en bit av den första koden du postade på en annan sida...
Men när man laddar sidan går datumet i andra listen bara till ett mer än datumet i den första listen. Alla datum i den valda månaden får gärna synas vid laddning av sidan.

Också, om man väljer ett datum i andra uppsättningen som är tidigare än dagens datum, ska månaden i andra uppsättningen hoppa fram till nästa månad.

Medlem sedan juni 20004 308 inlägg
#16

Ursäkta, en liten bug :)

<form name="myform">
Datum
<select name="datum" onChange="update2(this.form);">
<script type="text/javascript">for(var n=1;n<32;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Månad
<select name="manad" onChange="rebuildManad(this,this.form.datum); update2(this.form);">
<script type="text/javascript">for(var n=1;n<13;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Tid
<select name="tid" onChange="update2(this.form);">
<script type="text/javascript">for(var n=0;n<24;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"00\">"+((n>9)?n:"0"+n)+"00</option>");  }</script>
</select>
<br/>
Datum
<select name="datum2">
<script type="text/javascript">for(var n=1;n<32;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Månad
<select name="manad2" onChange="rebuildManad(this,this.form.datum2);">
<script type="text/javascript">for(var n=1;n<13;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"\">"+((n>9)?n:"0"+n)+"</option>");  }</script>
</select>
Tid
<select name="tid2">
<script type="text/javascript">for(var n=0;n<24;n++){ document.write("<option value=\""+((n>9)?n:"0"+n)+"00\">"+((n>9)?n:"0"+n)+"00</option>");  }</script>
</select>

</form>
<script type="text/javascript">
function rebuildManad(mobj,dobj){
	var d=new Date(new Date().getFullYear(),mobj.selectedIndex+1,0).getDate();
	dobj.length=d;
	for(var n=0;n<d;n++){
		dobj[n].value=dobj[n].text=(n<9)?"0"+(n+1):n+1;
	}
}
function update2(obj){
	var d=new Date(new Date().getFullYear(),obj.elements['manad'].selectedIndex,obj.elements['datum'].selectedIndex+2);
	obj.elements['datum2'].length=new Date(d.getFullYear(),d.getMonth()+1,0).getDate();
	for(var n=0;n<new Date(d.getFullYear(),d.getMonth()+1,0).getDate();n++){
		obj.elements['datum2'][n].value=obj.elements['datum2'][n].text=(n<9)?"0"+(n+1):n+1;
	}
	obj.elements['datum2'].selectedIndex=d.getDate()-1;
	obj.elements['manad2'].selectedIndex=d.getMonth();
	obj.elements['tid2'].selectedIndex=obj.elements['tid'].selectedIndex;
}
window.onload=function(){
	document.forms['myform'].elements['datum'].selectedIndex=new Date().getDate()-1;
	document.forms['myform'].elements['manad'].selectedIndex=new Date().getMonth();
	document.forms['myform'].elements['tid'].selectedIndex=new Date().getHours();
	rebuildManad(document.forms['myform'].elements['manad'],document.forms['myform'].elements['datum']);
	update2(document.forms['myform']);
}
</script>

... med reservation, det är trots allt fredagkväll... :D

Medlem sedan maj 2002821 inlägg
#17

Javisst, ingen fara. Jag e mycket tacksam för all hjälp. Själv ska man snart iväg för att jobba hela natten...

Medlem sedan maj 2002821 inlägg
#18

Tack för hjälpen. Jag är mycket nöjd.

275 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
145 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)