php - Javascript - If 条件由 "&&"分隔(需要建议)

标签 php javascript forms if-statement operators

应该是一个非常简单的修复...

我有一个注册表单,我想验证它的空字段,并让 JavaScript 在必要时返回一个简单的弹出警报。这是脚本代码:

<script type="text/javascript">
    function validateForm() {
        var a = document.forms["registration_form"]["school"].value;
        var b = document.forms["registration_form"]["name"].value;
        var c = document.forms["registration_form"]["password"].value;
        var d = document.forms["registration_form"]["field"].value;
        var e = document.forms["registration_form"]["field_location"].value;
        var f = document.forms["registration_form"]["volleyball_campus"].value;
        var g = document.forms["registration_form"]["volleyball_location"].value;
        var h = document.forms["registration_form"]["indoor"].value;
        var i = document.forms["registration_form"]["outdoor_courts"].value;
        var j = document.forms["registration_form"]["blackout"].value;
        var k = document.forms["registration_form"]["blackout_dates"].value;
        if (a == "" || b == "") {
            alert("Please make sure to enter your name and school.");
            return false;
        } else if (c != "pal") {
            alert("Sorry, your password is invalid.");
            return false;
        } else if (d == "no" && e == "") {
            alert("Please make sure to enter where you will play football.");
            return false;
        } else if (f == "no" && g == "") {
            alert("Please make sure to enter where you will play volleyball.");
            return false;
        } else if (h == "no" && i == "0") {
            alert("Please make sure to select how many outdoor volleyball courts you will use.");
            return false;
        } else if (j == "yes" && k == "") {
            alert("Please make sure to enter your blackout dates.");
            return false;
        }
    }
</script>

变量 a、b 和 c 一切正常。然而,以变量 d && e 开头的 else if 条件似乎没有执行。我想我的措辞肯定有问题,但我不知道它是什么。

我已经将服务器端 php 脚本设置为执行完全相同的操作,并且它可以正常工作。您可以在这里看到它:

//Validate the form:
if ($_POST['school'] == "" || $_POST['name'] == "") {
    echo "Please make sure to enter your name and school.";
} elseif ($_POST['password'] != "pal") {
    echo "Sorry, your password is invalid.";
} elseif ($_POST['field'] == "no" && $_POST['field_location'] == "") {
    echo "Please make sure to enter where you will play football.";
} elseif ($_POST['volleyball_campus'] == "no" && $_POST['volleyball_location'] == "") {
    echo "Please make sure to enter where you will play volleyball.";
} elseif ($_POST['indoor'] == "no" && $_POST['outdoor_courts'] == "0") {
    echo "Please make sure to select how many outdoor volleyball courts you will use.";
} elseif ($_POST['blackout'] == "yes" && $_POST['blackout_dates'] == "") {
    echo "Please make sure to enter your blackout dates.";
} else {

这按照我想要的方式捕获了所有内容,但是客户端 Javascript 验证(我首先运行它只是为了获得更用户友好的外观)似乎无法超越前三个变量。

我一生都无法弄清楚为什么。我在互联网上进行了搜索,但找不到我正在寻找的答案。任何帮助将不胜感激!

附注该页面本身位于http://www.712jefferson.org/pal/registration.html ,如果这有助于阐明预期的过程。

最佳答案

仅当 d 等于 no 并且 e 留空时才会显示警报。这同样适用于 fg。这没有道理。举个例子:

我打 Volley ,但不在校园打球,所以我在f中输入no,你的逻辑希望我输入一个空字符串在 g 中,您确实希望用户输入 Volley 位置。

这应该更改为:

else if (f == "no" && g != "") {

}  

请注意从 ==!= 的更改,这意味着 g 不等于空字符串。这同样适用于 de (如果 d 设置为,您不希望 e 为空“不”)。

此外,在客户端验证您的密码是有风险的,我希望您进行服务器端验证。

关于php - Javascript - If 条件由 "&&"分隔(需要建议),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280095/

相关文章:

java - 使用 Spring 从 Angular 表单中恢复数据

php - 从sql查询中选择特定文本

php - 使用序列化表单数据更新mysql数据库中的多行

php - 在 php、ajax 或 javascript 中加载进度?

java - 使用 Java 将数据从一种形式传输到另一种形式

javascript - 如何在新窗口中打开适用于 IE 的 javascript 搜索引擎的搜索结果页面?

php - Python 到 PHP 的行

javascript - .on ("change"不适用于partialView

创建 DOM 节点的 Javascript 流程

javascript - 如何在React Native中进行条件渲染