使用Javascript

时间:2017-07-28 17:51:05

标签: javascript forms validation

我昨天问了一个问题,并且在大家的建议下,我能够让我的switch语句工作(很好)。我还有两个问题:

switch语句现在正在运行,很好。感谢所有的建议。不过,我有两个问题。

1。)如果我的课程和部分不匹配,我会收到验证消息,告诉我我的部分无效(太棒了!),但点击确定后,它仍然会前进到确认消息,然后是表单处理器页面。关于如何防止这种情况的任何建议?

2。)在确认消息中,如果我单击取消,我会收到正确的消息,表明我的注册已被取消(太棒了!),但它仍然会进入表单处理器页面...告诉我我的表单已经已提交。关于如何防止这种情况的任何建议?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--Document Head-->
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--Title Element-->
<title>Greendale Community College</title>
<!--Style Element-->
<style type="text/css">
    body {
        background-color: white;
    }

    h1 {
        text-align: center;
        font-family: Impact;
        color: green;
    }

    p {
        font-size: 72px;
        color: green;
    }
</style>
<!--Script Element-->
<script type="text/javascript">
    /* <![CDATA[ */
    // function to validate and create message confirm box
    function submitRegistration() {
        var fName = document.registration.firstName.value;
        var lName = document.registration.lastName.value;
        var cwid = document.registration.cwid.value;
        var semester = document.registration.semester.value;
        var course = document.registration.courses.value;
        var section = document.registration.section.value;
        var major = document.registration.needForMajor.value;
        var semesterDisplay;
        // To display semester info in confirm message
        if (semester == "fall")
            semesterDisplay = "Fall";
        if (semester == "spring")
            semesterDisplay = "Spring";
        if (semester == "summer")
            semesterDisplay = "Summer";
        //To display major requirement in confirm message
        var checkDisplay;
        if (document.registration.needForMajor.checked == true) {
            checkDisplay = "Course Needed For Major";
        }
        else {
            checkDisplay = "";
        }
        //Validates first name
        if (fName == "") {
            window.alert("You must enter your first name!");
            return false;
        }
        //Validates that first name is non-numeric
        if (isNaN(fName) == false) {
            window.alert("Your First Name must be non-numeric values!");
            return false;
        }
        //Validates last name
        if (lName == "") {
            window.alert("You must enter your last name!");
            return false;
        }
        //Validates that last name is non-numeric
        if (isNaN(lName) == false) {
            window.alert("Your Last Name must be non-numeric values!");
            return false;
        }
        //Validates CWID
        if (cwid == "") {
            window.alert("You must enter your cwid!");
            return false;
        }
        //Validates that CWID is numeric
        if (isNaN(cwid) == true) {
            window.alert("Your CWID must be numeric values!");
            return false;
        }
        //Validates semester
        var validateSemester = false;
        for (var i = 0; i < 3; ++i) {
            if (document.registration.semester[i].checked == true) {
                validateSemester = true;
                break;
            }
        }
        if (validateSemester != true) {
            window.alert("You must select a Semester!");
            return false;
        }
        //Validates course
        if (course == "") {
            window.alert("You must select a Course!");
            return false;
        }
        // Validates that the course and section are compatible
        var error = true;
        switch (course) {
            case "CIS 100":
                if (section == '100001') {
                } else if (section == '100gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 100!");
                    error = false;
                }
                break;
            case "CIS 120":
                if (section == '120001') {
                } else if (section == '120gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 120!");
                    error = false;
                }
                break;
            case "CIS 220":
                if (section == '220001') {
                } else if (section == '220gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 220!");
                    error = false;
                }
                break;
            case "CIS 299":
                if (section == '299001') {
                } else if (section == '299gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 299!");
                    error = false;
                }
                break;
            case "CIS 302":
                if (section == '302gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 302!");
                    error = false;
                }
                break;
            case "CIS 304":
                if (section == '304001') {
                } else if (section == '304gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 304!");
                    error = false;
                }
                break;
            case "CIS 321":
                if (section == '321001') {
                } else if (section == '321gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 321!");
                    error = false;
                }
                break;
            case "CIS 322":
                if (section == '322gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 322!");
                    error = false;
                }
                break;
            case "CIS 325":
                if (section == '325gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 325!");
                    error = false;
                }
                break;
            case "CIS 330":
                if (section == '330001') {
                } else if (section == '330gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 330!");
                    error = false;
                }
                break;
            case "CIS 332":
                if (section == '332001') {
                } else if (section == '332gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 332!");
                    error = false;
                }
                break;
            case "CIS 341":
                if (section == '341001') {
                } else if (section == '341gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 341!");
                    error = false;
                }
                break;
            case "CIS 343":
                if (section == '34301a') {
                } else if (section == '34301b') {
                } else {
                    window.alert("You must select a valid section for CIS 343!");
                    error = false;
                }
                break;
            case "CIS 352":
                if (section == '352gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 352!");
                    error = false;
                }
                break;
            case "CIS 354":
                if (section == '354001') {
                } else if (section == '354gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 354!");
                    error = false;
                }
                break;
            case "CIS 401":
                if (section == '401gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 401!");
                    error = false;
                }
                break;
            case "CIS 419":
                if (section == '419x01') {
                } else {
                    window.alert("You must select a valid section for CIS 419!");
                    error = false;
                }
                break;
            case "CIS 490":
                if (section == '490001') {
                } else if (section == '490gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 490!");
                    error = false;
                }
                break;
            case "CIS 492":
                if (section == '492gw1') {
                } else {
                    window.alert("You must select a valid section for CIS 492!");
                    error = false;
                }
                break;
            case "MAT 195":
                if (section == '195001') {
                } else if (section == '195w01') {
                } else {
                    window.alert("You must select a valid section for MAT 195!");
                    error = false;
                }
                break;
            case "MAT 215":
                if (section == '215001') {
                } else if (section == '215w01') {
                } else {
                    window.alert("You must select a valid section for MAT 215!");
                    error = false;
                }
                break;
            case "MAT 225":
                if (section == '225001') {
                } else if (section == '225w01') {
                } else {
                    window.alert("You must select a valid section for MAT 225!");
                    error = false;
                }
                break;
            case "MAT 281":
                if (section == '281001') {
                } else if (section == '281w01') {
                } else {
                    window.alert("You must select a valid section for MAT 281!");
                    error = false;
                }
        }

        //Validates section
        if (section == "") {
            window.alert("You must select a Section!");
            return false;
        }  
        //Confirm message
        var confirmation = window.confirm("Student Name: " + fName + " " + lName + "   CWID: " + cwid + "   Semester: " + semesterDisplay + "   Course: " + course + "   Section: " + section + "   " + checkDisplay);
        //Ok and Cancel buttons
        if (confirmation) {
            window.alert("You have been registered for your course!");
        }
        else {
            window.alert("Your registration has been canceled.");
        }
    }
    //Reset function
    function resetRegistration() {
        var resetForm = window.confirm("Are you sure you want to reset the form?");
        if (resetForm == true)
            return true;
        return false;
    }
    //Functions for mouseover and mouseout
    function mouseOver(target) {
        target.src = 'greendale_paper.png'
        target.alt = 'paper'
    }

    function mouseOut(target) {
        target.src = 'greendale.jpg'
        target.alt = 'greendale'
    }
    /* ]]> */
</script>
</head>
<body>
<!--Heading Element-->
    <h1>Greendale Community College</h1>
        <!--Added a mouseover and mouseout-->
        <center><img src="greendale.jpg" alt="greendale"  width="560" height="315" 
            onmouseover="mouseOver(this)"
            onmouseout="mouseOut(this)" 
        /></center>
    <h3 align="center">Greendale Community College Orientation Video</h3>
    <center><iframe width="560" height="315" src="https://www.youtube.com/embed/i3z5QO2O3cU" frameborder="0"></iframe></center>
    <h2 align="center">Course Registration Page</h2>
<form action="FormProcessor.html" name="registration" method="get"
      onsubmit="return submitRegistration()"
      onreset="return resetRegistration()">
    <h3>Student Information Form</h3> 
    <!--Student Information-->
    First Name:<input type="text" name="firstName"/><br />
    Last Name:<input type="text" name="lastName"/><br />
    CWID:<input type="text" name="cwid" size="8" /><br />
    <h3>Semester</h3>
    <h4>(choose a semester)</h4>
    <!--Radio Buttons to Choose Semester-->
    <input type="radio" name="semester" value="fall" /> Fall 2018 <br />
    <input type="radio" name="semester" value="spring" /> Spring 2018 <br />
    <input type="radio" name="semester" value="summer" /> Summer 2018 <br />
    <h3>Courses</h3>
    <h4>(choose one course)</h4>
    <table>
        <!--Drop Down Box for Courses-->
        <tr><td style="background:white;border:0">Courses:</td>
            <td>
                <select name="courses" size="1">
                    <option value=""></option>
                    <option value="CIS 100">CIS 100 Intro to CIS</option>
                    <option value="CIS 120">CIS 120 Application Prog I</option>
                    <option value="CIS 220">CIS 220 Application Prog II</option>
                    <option value="CIS 299">CIS 299 System Analysis I</option>
                    <option value="CIS 302">CIS 302 Visual Programming</option>
                    <option value="CIS 304">CIS 304 Cobol</option>
                    <option value="CIS 321">CIS 321 DB Mgt Sys and Design</option>
                    <option value="CIS 322">CIS 322 DB App Development</option>
                    <option value="CIS 325">CIS 225 Dec Support Systems</option>
                    <option value="CIS 330">CIS 330 Web Programming I</option>
                    <option value="CIS 332">CIS 332 Web Programming II</option>
                    <option value="CIS 341">CIS 341 CISCO CCNA I</option>
                    <option value="CIS 343">CIS 343 CISCO CCNA III</option>
                    <option value="CIS 352">CIS 352 Global Ethics in Comp</option>
                    <option value="CIS 354">CIS 354 Sys Project Mgt</option>
                    <option value="CIS 401">CIS 401 Concepts Enter Res Planning</option>
                    <option value="CIS 419">CIS 419 CIS Internship</option>
                    <option value="CIS 490">CIS 490 Systems Analysis II</option>
                    <option value="CIS 492">CIS 492 Systems Dev and Imp</option>
                    <option value="MAT 195">MAT 195 Discrete Math Structures</option>
                    <option value="MAT 215">MAT 215 Statistics</option>
                    <option value="MAT 225">MAT 225 Business Statistics</option>
                    <option value="MAT 281">MAT 281 Calculus I</option>
                </select>
            </td>
        </tr>
    </table>
    <h3>Sections</h3>
    <h4>(choose one section)</h4>
    <table>
        <tr><td style="background:white;border:0">Section Numbers:</td>
            <td>
                <!--Selection Box-->
                <select name="section" multiple="multiple" size="5">
                    <option value=""></option>
                    <option value="100001">CIS 100 001</option>
                    <option value="100gw1">CIS 100 GW1</option>
                    <option value="120001">CIS 120 001</option>
                    <option value="120gw1">CIS 120 GW1</option>
                    <option value="220001">CIS 220 001</option>
                    <option value="220gw1">CIS 220 GW1</option>
                    <option value="299001">CIS 299 001</option>
                    <option value="299gw1">CIS 299 GW1</option>
                    <option value="302gw1">CIS 302 GW1</option>
                    <option value="304001">CIS 304 001</option>
                    <option value="304gw1">CIS 304 GW1</option>
                    <option value="321001">CIS 321 001</option>
                    <option value="321gw1">CIS 321 GW1</option>
                    <option value="322gw1">CIS 322 GW1</option>
                    <option value="325gw1">CIS 325 GW1</option>
                    <option value="330001">CIS 330 001</option>
                    <option value="330gw1">CIS 330 GW1</option>
                    <option value="332001">CIS 332 001</option>
                    <option value="332gw1">CIS 332 GW1</option>
                    <option value="341001">CIS 341 001</option>
                    <option value="341gw1">CIS 341 GW1</option>
                    <option value="34301a">CIS 343 01A</option>
                    <option value="34301b">CIS 343 01B</option>
                    <option value="352gw1">CIS 352 GW1</option>
                    <option value="354001">CIS 354 001</option>
                    <option value="354gw1">CIS 354 GW1</option>
                    <option value="401gw1">CIS 401 GW1</option>
                    <option value="419x01">CIS 419 X01</option>
                    <option value="490001">CIS 490 001</option>
                    <option value="490gw1">CIS 490 GW1</option>
                    <option value="492gw1">CIS 492 GW1</option>
                    <option value="195001">MAT 195 001</option>
                    <option value="195w01">MAT 195 W01</option>
                    <option value="215001">MAT 215 001</option>
                    <option value="215w01">MAT 215 W01</option>
                    <option value="225001">MAT 225 001</option>
                    <option value="225w01">MAT 225 W01</option>
                    <option value="281001">MAT 281 001</option>
                    <option value="281w01">MAT 281 W01</option>
                </select>
                </td>
            </tr>
    </table>
    <!--Checkbox-->
    <input type="checkbox" name="needForMajor" />
    Check if the course is required for your major!<br />
    <!--Submit and Reset Buttons Created-->
    <input type="submit" name="submit" value="Submit"/><br />
    <input type="reset" name="reset" value="Reset"/>
    </form>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

您似乎没有使用error = false执行任何操作。也许你的意思是返回假;

无论如何,你可以添加一个if语句来检查error的值,并根据它返回false:

                break;
        case "MAT 225":
            if (section == '225001') {
            } else if (section == '225w01') {
            } else {
                window.alert("You must select a valid section for MAT 225!");
                error = false;
            }
            break;
        case "MAT 281":
            if (section == '281001') {
            } else if (section == '281w01') {
            } else {
                window.alert("You must select a valid section for MAT 281!");
                error = false;
            }
    }
    if (error==false){
        return false;
    }

此外,您需要在警报时返回false才能正确取消:

//Ok and Cancel buttons
if (confirmation) {
    window.alert("You have been registered for your course!");
}
else {
    window.alert("Your registration has been canceled.");
    return false;
}

答案 1 :(得分:0)

我认为你需要在这些块中返回false,你也会在这些检查中设置一个错误变量,但它不会返回,所以基本上你有一个假变量然后继续。

//Ok and Cancel buttons
    if (confirmation) {
        window.alert("You have been registered for your course!");
    }
    else {
        window.alert("Your registration has been canceled.");
        return false;
    }

答案 2 :(得分:0)

其他答案在解决您的问题方面做得很好但是为了提高可读性(甚至可能首先避免了这个问题)您是否考虑过用其他东西替换switch语句?也许有一个带有类的键的对象和值作为可用部分的列表,如下所示:

var availableSections = {
  'CIS 100': ['100001', '100gw1'],
  ...
}

if (!availableSections[course] || availableSections[course].indexOf(section) < 0) {
  window.alert("You must select a valid section for " + course + "!");
  return false;
}