webForumDet fria alternativet

Lite akut: Vad är fel på detta javascript?

3 svar · 625 visningar · startad av tovelainen

tovelainenMedlem sedan mars 2003137 inlägg
#1

Hej
Hållit på med detta river mitt hår.
Nån som ser vad vi gör fel här?

En person är inbjuden att ta med sig fler personer på ett event.
Deltagarna, dvs om fler än en biljett beställs, ska ange sitt namn i inut fieldsen.

Här funkar att påminna om man glömt boka biljetter, och om man bokar över 4 st. Men varför kan den inte be om namnet på tex de 2 deltagarna man tar med sig om antal biljetter är 3?

<form name="Form" onsubmit="return checkForm();" action="#" method="post">
<table><td>
How  many tickets? (maximum 4 stk/person)
</td><td></td>
</tr><tr>
<td valign="top" align="left" style="height: 30px;">
Kid tickets</td><td>
<select name="childtickets" id="childtickets">
							<option selected="selected" value="-">
							-- Choose kid tickets --</option> 
							<option value="1">
							1</option>
							<option value="2">
							2</option>
							<option value="3">
							3</option>
							<option value="4">
							4</option>
							</select></td></tr>
						<tr>
							<td>Adult tickets</td>
							<td>
							<select name="adulttickets" id="adulttickets">
							<option selected="selected" value="-">
							-- Choose adult tickets--</option> 
							<option value="1">
							1</option>
							<option value="2">
							2</option>
							<option value="3">
							3</option>
							<option value="4">
							4</option>
							</select></td>
						</tr><tr>
							<td>Name on person 2</font></td>
							<td><input value="" name="Name_2" id="Name_2" /></td>
						</tr>
						<tr>
							<td>Name on person nr 3</td>
							<td><input value="" name="Name_3" id="Name_3" /></td>
						</tr>
						<tr>
							<td>Name on person nr 4</font></td>
							<td ><input value="" name="Name_4" id="Name_4" /></td>
						</tr></table>

</form>
<script language="JavaScript" type="text/javascript">
	<!--
	function checkForm()
	{
	var var1 = document.getElementById("childtickets").value;
	var var2 = document.getElementById("adulttickets").value;
	if(var1 == "-" && var2 == "-"){
	alert ("Remmber booking tickets");
	return false;
	}
	/*Hi Basilis - its from here down*/
	var var1 = document.getElementById("childtickets").value;
	var var2 = document.getElementById("adulttickets").value;
	var var1int = parseFloat(var1);
	var var2int = parseFloat(var2);
	var tal=var1int + var2int;
	if(tal >4){
	alert ("You can order totally max 4 tickets");
	return false;
	}
	var name2 = document.getElementById("Name_2").value;
	var name3 = document.getElementById("Name_3").value;
	var name4 = document.getElementById("Name_4").value
		
	if(tal==2 && name2==""){
	alert ("Please fill out person 2:s name");
	f.elements['Name_2'].focus(); 
	return false;
	}
	else if((tal==3) && (name2=="" || name3=="")){
	alert ("Please fill out person 2 and  3:s name");
	f.elements['Name_2'].focus(); 
	return false;
	}
	else if((tal==4) && (name2=="" || name3=="" || name4=="")){
	alert ("Please fill out name of all persons");
	f.elements['Name_2'].focus(); 
	return false;
	}
	}
	//-->
	</script>
voigtann1Medlem sedan juni 20019 519 inlägg
#2

Din kod säger att allt eller inget, om du har valt tre deltagare så kommer den endast klaga på att namn är tomma OM deltagare Name_2 och Name_3 är tomma inte bara om Name_3 är tom, tycker JS koden känns lite bökig du kommer få många if frågor för att täcka in alla scenario om du skall ha ett liknande felmeddelande på varje scenario du försöker träffa in dig på.

tovelainenMedlem sedan mars 2003137 inlägg
#3

Hej
och tack för kommentar. Jo jag vet att den är bökig tyvärr.
Men visst borde det inte va supersvårt att kolla if (tal = 3)
så bör input Namn_1 och Namn_2 vara ifyllda?

Hm.. får försöka lite till.
Eller nån annan som har nåt knep. det skulle inte funka med nån for-sats? Dem är jag helt urusel på.

tovelainenMedlem sedan mars 2003137 inlägg
#4

Asch detta är löst. Kom på att default value, om inget valts, ju var "-" vilket gjorde hela beräkningen omöjlig. Ändrade till "0" så funkade allt.

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)