即使一切似乎都没问题,javascript表单验证也不起作用(浏览器中没有禁用JS)

时间:2014-03-24 15:27:30

标签: javascript php

我有这样的表格:

<form action="../scrapll_m_nonstatic/process/reg/signup_process.php" method="post" name="signUp" onsubmit="return signUpVal()">
            <div id="fieldHolder">
                <input type="text" id="accountFieldFirstName" class="accountField" name="firstName" placeholder="First Name" />
                <input type="text" id="accountFieldLastName" class="accountField" name="lastName" placeholder="Last Name" />
                <input type="text" id="accountFieldUsername" class="accountField" name="username" placeholder="Username" />
                <input type="text" id="accountFieldEmail" class="accountField" name="email" placeholder="Email Address" />
                <input type="password" id="accountFieldPassword" class="accountField" name="password" placeholder="Password" />
            </div>
            <div id="subFooter">
                <a data-ftrans="slide reverse" href="index.php" id="signUpButton">Sign In</a>
                <a data-ftrans="slide" href="forgot.php" id="forgotButton">Forgot password</a>
            </div>
            <div id="footer">
                <input type="submit" id="signIn" value="Sign Up" />
        </form>

我有这个JS表单验证脚本来检查表单是否为空:

function signUpVal()
{
    var firstName = document.forms["signUp"]["firstName"].value;
    var lastName = document.forms["signUp"]["lastName"].value;
    var userName = document.forms["signUp"]["userName"].value;
    var email = document.forms["signUp"]["email"].value;
    var password = document.forms["signUp"]["password"].value;
    if (firstName == null || lastName == "" || lastName == null || lastName == "" ||    userName == null || userName == "" || email == null || email == "" || password == null || password = "")
    {
        alert("Please fill out the form completely");
        return false;
    }
}

它没有做任何事情直接进入动作PHP脚本。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

你有两个错误:

1)。 JS代码中输入的用户名的名称不匹配。解决这个问题:

<input type="text" name="userName" id="accountFieldUsername" class="accountField" placeholder="Username" />

而不是name="username"

2)。检查您的值如下:

if (firstName == "" || lastName == "" || userName == "" || email == "" || password == "") {
    alert("Please fill out the form completely");
    return false;
}

此外,您不需要== null检查,因为表单元素值不能为空,如果留空则为空字符串。

演示:http://jsfiddle.net/tn4A6/

答案 1 :(得分:0)

我认为这可能是你的问题。

您正在使用赋值运算符=而不是比较运算符==

你的if条件应该是:

 if (firstName == null || lastName == "" || lastName == null || lastName == "" ||    userName == null || userName == "" || email == null || email == "" || password == null || password == "")
    {
        alert("Please fill out the form completely");
        return false;
    }

答案 2 :(得分:0)

最后一个&#34; =&#34; (而#34; ==&#34;)if(firstName == null .. etc)语句被IE视为语法错误,因此整个脚本没有编译。

Firefox说同样的事情,但令人惊讶的是他们都没有弹出突出显示它。仅在单击F12进行调试时才可见。

这意味着函数signUpVal()没有编译,因此就页面而言它并不存在 - 所以表单刚刚提交。

dfsq的回答提供了其余的