webForumDet fria alternativet

Kontroll av fält

3 svar · 336 visningar · startad av reka1

reka1Medlem sedan sep. 2001662 inlägg
#1

Hejs alla!
Håller på med ett litet valideringsskript som inte vill fungera som jag vill.
Det ska känna av så att det inte går att ange numren 7-18 i kombination med turistklass och
numren 1-6 i kombination med affärsklass.
Nu så generaras alltid det första felmeddelandet oavsett vilken kombination man anger :(

<html>
<head>
<script language="JavaScript">
function validera()
{
if (document.reka.stol.value >=1 || document.reka.stol.value <= 6 && document.reka.klass.value == "turist")
{
alert ("Du kan inte boka en stol (1-6) i denna klass!");
return false;
}

else if (document.reka.stol.value >= 7 || document.reka.stol.value <= 18 && document.reka.klass.value == "affar")
{
alert ("Du kan inte boka en stol (7-18) i denna klass!");
return false;
}

else if (document.reka.stol.value >=19)
{
alert ("Du angav för högs stolsnummer (1-18)!");
return false;
}
else
{
alert ("Din bokning har skickats iväg!");
return true;
}
}
</script>
</head>
<body>
<form name="reka" onsubmit="return validera()">
<input type="text" name="stol"><br>
<select name="klass">
<option value="">-- Välj klass --</option>
<option value="affar">Affärsklass</option>
<option value="turist">Turistklass</option>
</select>
<input type="submit">
</form>
</body>
</html>

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Jag såg först inte felet, så jag skrev om hela koden så den blev lite snyggare(och innehåller mer validering). Men felet verkade vara att || ska bytas ut mot &&. Som det var förut var fel nummer ifyllt när stolsnumret var större än 1 eller mindre än 6 (det vill säga alltid.)

Den nya koden innehåller fullständig validering (Måste fylla i, måste välja klass osv.)

<script language="JavaScript"> 
function validera() 
{ 

if (document.reka.stol.value.length == 0) { 
	alert ("Du måste fylla i stolsnummer."); 
	return false; 
} 

if (document.reka.stol.value >18 || document.reka.stol.value <1 ) { 
	alert ("Du angav för högt eller för lågt stolsnummer (1-18)!"); 
	return false; 
} 

switch(document.reka.klass.value){
	case ("turist"):
		if (document.reka.stol.value >=1 && document.reka.stol.value <= 6){
			alert ("Du kan inte boka en stol (1-6) i denna klass!"); 
			return false; 
		}
		break
	case ("affar"):
		if (document.reka.stol.value >= 7 && document.reka.stol.value <= 18){
			alert ("Du kan inte boka en stol (7-18) i denna klass!")
			return false; 
		}
		break
	default:{
			alert("Du måste välja klass!");
			return false;
		}
}

alert ("Din bokning har skickats iväg!"); 
return true; 
} 
</script>
reka1Medlem sedan sep. 2001662 inlägg
#3

Suveränt :) Man tackar för ett snabbt och 'fungerande' svar =)

nitro2k01Medlem sedan aug. 20037 630 inlägg
#4

Det är så det ska vara på wF! :) :) :)

125 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
121 ms — hämta tråd, inlägg och bilagor (db)