webForumDet fria alternativet

Bestämma datum utifrån vissa kriterier

JavaScript

5 svar · 185 visningar · startad av jonne

Medlem sedan jan. 20011 154 inlägg
Frågan#1

Beskrivning av problem:

Håller på med ett litet bokningssystem. I detta så ska man baserat på vilket datum bokningen gäller och för hur många personer kunna få fram ett bekräftelsedatum. Om man fyller i exv 30 så ska datum ökas med 20 dagar. Fyller man i 60 så ska det ökas med 31 dagar.

Detta skulle jag kunna göra med php, men jag vill att så fort man har fyllt i antalet personer och hoppar till nästa fält så ska bekräftelsedatumet uppdateras automatiskt.
Datumet är i formatet yyyy-mm-dd

Datum, Antal och bekräftelsedatum är separata formulärfält.

Hoppas någon förstår vad det är jag menar :)

Medlem sedan juni 20004 308 inlägg
#2

... och om man fyller i 15 eller 45 dagar?

Här är ett exempel som upp till 59 personer lägger till 20 dagar, 60 och över; 31 dagar - du ser säkert hur du kan ändra det.

<script language="JavaScript" type="text/javascript">
function getDateObjOfLameTextString(str){
	if(!str.match(/^(\d{4})-(\d{2})-(\d{2})$/)){ return false; }
	return new Date(RegExp.$1,RegExp.$2-1,RegExp.$3);
}
function update(obj){
	var antal=isNaN(parseInt(obj.antal.value))?0:parseInt(obj.antal.value)
	obj.antal.value=antal;	
	var date=(getDateObjOfLameTextString(obj.datum.value))?getDateObjOfLameTextString(obj.datum.value):"";
	if(antal>0&&date){
		add=(antal<60)?20:31;
		date=new Date(date.getTime()+(add*86400000));
		obj.bekrdatum.value=date.getFullYear()+"-"+((date.getMonth()<9)?"0":"")+(date.getMonth()+1)+"-"+((date.getDate()<10)?"0":"")+date.getDate();
	} else {
		obj.bekrdatum.value="";
	}
}
</script>
<form>
Antal: <input type="text" name="antal" onchange="update(this.form);" value="1"><br>
Datum: <input type="text" name="datum" onchange="update(this.form);"><br>
Bekräftelsedatum: <input type="text" name="bekrdatum" readonly><br>
</form>
Medlem sedan jan. 20011 154 inlägg
#3

Du är ett litet guldkorn Jojoxx. Var precis det jag var ute efter och funkar klockrent. Tusen tack.

Medlem sedan jan. 20011 154 inlägg
#4

Hmm hade visst ett litet tankefel där. Bekräftelsedatumet ska ju ligga före och inte efter angivet datum.
Eftersom jag är totalt nollställd vad gäller javascript kanske man kan få en liten fingervisning? :)

Sen en sak till. Hur skulle det se ut om jag skulle vilja ha ytterligare ett kriterie för antalet personer. Alltså dra ifrån ett visst antal dagar beroende på om det är 30, 50 eller 60 personer som bokas?

Medlem sedan juni 20004 308 inlägg
#5
if(antal<30){
   add=15; // Mindre än 30
}else if(antal<50){
   add=20; // Mindre än 50
}else if(antal<60){
   add=31; // Mindre än 60
} else {
   add=45; // 60 och över
}

date=new Date(date.getTime()-(add*86400000));
Medlem sedan jan. 20011 154 inlägg
#6

Börjar få slut på supelativ snart så säger bara tack så mycket :)

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)