【问题标题】:Form Validation and Alert issues in JavaScriptJavaScript 中的表单验证和警报问题
【发布时间】:2017-08-25 07:05:11
【问题描述】:

以下是我正在进行的项目的完整副本。我遇到了表单的 JavaScript 验证段以及 JavaScript 在函数末尾产生警报的问题。

我们的想法是拥有验证表单的功能,这样,如果您超过 18 岁:您只需要填写名字和姓氏字段。 (只要有效,内容并不重要。)另一方面,如果您未满 18 岁,该功能还需要验证监护人详细信息。

直到最近进行了一些更改,但这工作正常,问题是我离开项目几个星期,所以我不知道进行了哪些更改才能撤消它们。理想情况下,基本代码不会改变太多,我正在寻找一种快速修复或权宜之计,以达到同样的效果。

<html>
    <head>
        <meta charset="utf-8">
            <title>Work Field Trip Registration</title>
                <script type="text/javascript">
                    function HideReveal() {

                    if (document.getElementById("YesNo").selectedIndex == "1") {
                        document.getElementById("ifYes").style.display = "block";
                        Required();
                        //alert('1st Option Tested');
                    }
                    else if (document.getElementById("YesNo").selectedIndex == "0") {
                        document.getElementById("ifYes").style.display = "none";
                        Required();
                        //alert('2nd Option Tested');
                    }
                    }

                    function Required() {

                    if (document.getElementById("YesNo").selectedIndex == "1") {
                        AddRequirement();
                        //alert("Step1");
                    }

                    else {
                        NoRequirement();
                        //alert("Step2");
                    }
                    }
                    function NoRequirement() {

                    document.getElementById("GuardName").removeAttribute("required");
                    document.getElementById("GuardPhone").removeAttribute("required");
                        //alert("Step3");
                    }

                    function AddRequirement() {

                    document.forms("death")("GuardianName").setAttribute("required", "");
                    document.forms("death")("GuardianNumber").setAttribute("required", "");
                        //alert("Step4");
                    }

                    function validateForm() {

                    var a = document.forms("death")("GuardianName").value;
                    var b = document.forms("death")("GuardianNumber").value;
                    var c = document.forms("death")("FirstName").value;
                    var d = document.forms("death")("LastName").value;

                        if (document.getElementById("YesNo").selectedIndex == "1")
                        {
                            if (a == "" || b == "") {
                                alert("Please fill ALL required fields");
                            }

                            else {
                                alert("Registration Complete!");    
                            }
                        }

                        else if (c == "" || d == "") {
                                alert("Please fill ALL required fields")
                        }

                        else {
                            alert("Registration Complete!")
                        }

                    }
                </script>
        </head>

    <body>
        <h2>Work Field Trip Registration!</h2>
        <h4>Please enter your details.</h4>
        <form name="death">
                First Name:<br>
            <input required type="text" name="FirstName"><br>
                Last Name:<br>
            <input required type="text" name="LastName"><br>
                Gender:<br>
                <select name="dMenu">
                    <option>Male</option>
                    <option>Female</option>
                </select><br><br>
                Are you under 18?
                <select id="YesNo" onChange="HideReveal()" name="dMenu">
                    <option name="OptionNo" id="OptionNo" value="0">No</option>
                    <option name="OptionYes" id="OptionYes" value="1">Yes</option>
                </select><br><br>
        <div id="ifYes" style="display:none">
            Please enter your Parent/Guardian's name:<br>
            <input type="text" id="GuardName" name="GuardianName"><br>
            Please enter your Parent/Guardian's phone number:<br>
            <input type="text" id="GuardPhone" name="GuardianNumber"><br>
        </div>
            <input onClick="validateForm()" type="submit" value="Submit">
        </form>
    </body>
</html>

【问题讨论】:

  • 对于问题的格式,我深表歉意。我还不习惯 Stack Overflow 以及如何设置元素和段。

标签: javascript forms function validation


【解决方案1】:

1) 如果您已将字段设置为必需,则无需调用验证。浏览器将为您处理。 2. 我想知道为什么你在 NoRequirement() 中使用了 'getElementbyId' 而在 AddRequirement() 中使用了 document.forms。 无论如何,这里是您的代码的修改版本。干杯

<html>

    <head>
        <meta charset="utf-8">
            <title>Work Field Trip Registration</title>
                <script type="text/javascript">
                    function HideReveal() {

                    if (document.getElementById("YesNo").selectedIndex == "1") {
                        document.getElementById("ifYes").style.display = "block";
                        Required();
                        //alert('1st Option Tested');
                    }
                    else if (document.getElementById("YesNo").selectedIndex == "0") {
                        document.getElementById("ifYes").style.display = "none";
                        Required();
                        //alert('2nd Option Tested');
                    }
                    }

                    function Required() {

                    if (document.getElementById("YesNo").selectedIndex == "1") {
                        AddRequirement();
                        //alert("Step1");
                    }

                    else {
                        NoRequirement();
                        //alert("Step2");
                    }
                    }
                    function NoRequirement() {

                    document.getElementById("GuardName").removeAttribute("required");
                    document.getElementById("GuardPhone").removeAttribute("required");
                        //alert("Step3");
                    }

                    function AddRequirement() {

                        document.getElementById('GuardName').setAttribute("required","")
                        document.getElementById('GuardPhone').setAttribute("required","")

                        //alert("Step4");
                    }


                </script>
        </head>

    <body>
        <h2>Work Field Trip Registration!</h2>
        <h4>Please enter your details.</h4>
        <form name="death">
                First Name:<br>
            <input required type="text" name="FirstName"><br>
                Last Name:<br>
            <input required type="text" name="LastName"><br>
                Gender:<br>
                <select name="dMenu">
                    <option>Male</option>
                    <option>Female</option>
                </select><br><br>
                Are you under 18?
                <select id="YesNo" onChange="HideReveal()" name="dMenu">
                    <option name="OptionNo" id="OptionNo" value="0">No</option>
                    <option name="OptionYes" id="OptionYes" value="1">Yes</option>
                </select><br><br>
        <div id="ifYes" style="display:none">
            Please enter your Parent/Guardian's name:<br>
            <input type="text" id="GuardName" name="GuardianName"><br>
            Please enter your Parent/Guardian's phone number:<br>
            <input type="text" id="GuardPhone" name="GuardianNumber"><br>
        </div>
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

【讨论】:

  • 感谢您的指点,但不幸的是,这对完成注册的警报没有帮助。验证功能的目的是在检查完所有必填字段后发出警报/消息,并确保根据选择器变量仅验证必要的字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
  • 2015-07-18
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多