javascript 为什么警报框没有出现?[关闭]

ruoxqz4g  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(125)

**关闭。**这个问题是not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
这是我的HTML和JS代码:

<!DOCTYPE html>
<html>
    <head>
        <script>
            function validateForm() {
                let x = document.forms["myForm"]["fname"].value;
                 if (x == "") {
                    alert("Name must be filled out");
                    return false;
                }
            }

            function validateForm() {
                let x = document.forms[myForm][lname].value;
                if (x == "") {
                    alert("Last name should be filled out");
                    return false;
                }
                else
                    alert("Thank you for your response");
            }
        </script>
    </head>

    <body>
        <h1>Student Information Form</h1>

        <br>
        <br>

        <form name="myForm" onsubmit="return validateForm()" method="post">
            <label for="fname">First name:</label><br>
            <input type="text" id="fname" name="fname"><br>
            <label for="lname">Last name:</label><br>
            <input type="text" id="lname" name="fname"><br> <br>
            <label for="email">Email:</label>
            <input type="text" id="email" name="email">

            <input type="reset">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

点击提交按钮后,我调用警报出现,但它没有出现。当我在输入标记中有数据时,当我单击提交时,数据就消失了。为什么会这样???

vc9ivgsu

vc9ivgsu1#

正如艾伦·莫里斯所说,你有很多事情要做:
1.第一个validateForm()函数会被第二个函数覆盖,所以你必须把这两个函数合并为一个。
1.在第二个函数document.forms["myForm"]["lname"]中传递文档中的索引键时出现语法错误缺少引号
因此,在我们修复这些错误并将我们的逻辑合并为一个之后,您的函数将看起来像:

function validateForm() {
    let fname = document.forms["myForm"]["fname"].value;
    let lname = document.forms["myForm"]["lname"].value;
    if (!fname) {
        alert("First name must be filled out");
        return false;
    }
    if (!lname) {
        alert("Last name must be filled out");
        return false;
    }
    alert("Thank you for your response");
    return true;
}
7gyucuyw

7gyucuyw2#

下面是您的代码的一个工作片段。您使用了两次的函数validateForm()就是您面临的问题。如果你必须使用一个函数,你应该只调用它一次。
为了验证其余的输入,我在函数的其余部分添加了更多的逻辑,以防您必须验证您的姓氏。
希望能帮上忙。

<!DOCTYPE html>
<html>
    <head>
       <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script>
            function validateForm() {
                let x = document.forms["myForm"]["fname"].value;
                let y = document.forms["myForm"]["lname"].value;                   
                  if(x == "" && y == ""){
                    alert("Name and Last name must be filled out");
                    return false;
                  }

                  if (x == "" && y != "") {
                    alert("Name must be filled out");
                    return false;
                  } 
                   
                  if (x != "" && y == "") {
                    alert("Last name must be filled out");
                    return false;
                  } 

            }

        </script>
    </head>

    <body>
        <h1>Student Information Form</h1>

        <br>
        <br>

        <form name="myForm" onsubmit="return validateForm()" method="post">
            <label for="fname">First name:</label><br>
            <input type="text" id="fname" name="fname"><br>

            <label for="lname">Last name:</label><br>
            <input type="text" id="lname" name="lname"><br> <br>

            <label for="email">Email:</label>
            <input type="text" id="email" name="email">

            <input type="reset">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>
odopli94

odopli943#

你的代码有两个问题:

  1. validateForm()的第一个示例被第二个示例重写,并且永远不会被调用。你应该把所有的代码移到一个函数中。
  2. document.forms["myForm"]["lname"].value代码中的字符串缺少引号。

相关问题