Javascript Empty check

Javascript Empty check

本文关键字:check Empty Javascript      更新时间:2023-09-26

所以,我有这段代码,但有些东西似乎没有按预期工作。

function validateForm() {
    var x = document.forms["reg"]["username","password","first_name","last_name","age","mail"].value;
    if (x==null || x=="" || x==0) {
        alert("All fields must be filled out");
        return false;
    }
}

如果我让任何一个字段为空,就会收到警报。除了最后一个。如果我填写了除邮件以外的所有字段,我就可以继续了。如果我只填写邮件,我也可以继续。

为什么它会检查除了最后一个字段之外的所有字段?

或者有没有一种更简单的方法来检查字段是否已填写?(我实际上使用的是PHP,但不知何故if(empty($_POST['username'])的东西已经不起作用了,所以我想只使用JS,因为它与警报消息一起看起来更好。

您需要将函数分解一点——将字段名放入一个数组中,然后逐个循环。正如评论中所述,不需要进行null检查。

function validateForm()
{
    var fields = ["username", "password", "first_name", "last_name", "age", "mail"];
    for(var i = 0; i < fields.length; i++)
    {
        var fieldName = fields[i];
        var x = document.forms["reg"][fieldName].value;
        if (x == "" || x == 0) {
            alert("All fields must be filled out");
            return false;
        }
    }
}

你也应该在你的PHP代码中做同样的验证,因为有人可以很容易地禁用JavaScript,所以数据根本不会得到验证。

您无法在数组中获得全部内容!相反,你需要采取不同的做法。它只使用mail,因为它是列表中的最后一个。所以,你可以这样做:

x = [];
x.push(document.forms["reg"]["username"].value);
x.push(document.forms["reg"]["password"].value);
x.push(document.forms["reg"]["first_name"].value);
x.push(document.forms["reg"]["last_name"].value);
x.push(document.forms["reg"]["age"].value);
x.push(document.forms["reg"]["mail"].value);

既然已经构建了该数组,就需要检查其中的""0值。您需要将类似PHP的in_array()的函数编写为JavaScript,以检查空值和0值。

您可以很高兴地使用jQuery表单验证器插件,而不是所有这些麻烦,而且它可以很好地完成工作。