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;
}
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>