reka1Medlem sedan sep. 2001662 inlägg 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>
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 Suveränt :) Man tackar för ett snabbt och 'fungerande' svar =)
Det är så det ska vara på wF! :) :) :)