JavaScript表单验证代码未提供所需的结果

时间:2013-05-05 05:43:36

标签: javascript html

我在我的网站上有一个订阅表单,我正在尝试验证。当用户单击按钮注册时,函数validate()被调用,字段应该被验证,但是我没有让它工作。

显然我的代码中存在一些错误。我试图用我所掌握的一点点知识解决它,但是无法让它发挥作用。如果你能指出我正在做错的方向,我将非常感激。

代码如下:

function validate()
{
    var name = document.getElementById("name").value;
    var phone = document.getElementById("phone").value;
    var nat = document.getElementById("nat").value;
    var address = document.getElementById("address").value;
    var town = document.getElementById("town").value;
    var zip = document.getElementById("zip").value;
    var userName = document.getElementById("userName").value;
    var password = document.getElementById("password").value;
    var password2= document.getElentById("password2").value;

    if (name == "" )
    {
        window.alert("Please Enter your Full Name")
    }
    checkNr= isNaN(phone)

    if(checkNr == true)
    {
        window.alert("You can only enter numbers. Please try again")
    }

    if (nat == "")
    {
       window.alert("Please enter your nationality")
    }

    if (address == "")
    {
        window.alert("Please Enter your address")
    }

    if (password != password2)
    {
        window.alert("Your passwords did not match. Please re-enter")
    }
}

</script>

HTML:

<form name="subscribe">
    FULLNAME: </strong><input type="text" id="name"/><br />
    PHONE NR: <input type="text" id="phone"  onblur="validateForm()" /><br />
    NATIONALITY:<input type="text" id="nat" /><br />
    Address:<input type="text" id="address" /><br />
    Town:<input type="text" id="town" /><br />
    Zip Code: <input type="text" id="zip" /><br />
    Username: <input type="text" id="userName" /><br />

    Password:<input type="password" name="password" /><br />
    Retype:<input type="password" name="password2"  /><br />
    <input type="button" value="submit" onclick="validate()" />
</form>

3 个答案:

答案 0 :(得分:1)

我在你的代码中发现了这些错误:

  1. 您的手机输入字段中未指定validateForm()功能
  2. 如果您希望表单发送数据,请在提交按钮上设置类型submit,而不是button
  3. 如果您想在未填写内容时停止提交表单,请挂钩表单的onsubmit事件:

    <form onsubmit="return validate()"> ... // note the return keyword
    
  4. 和脚本

    function validate() {
      ...
      if(somethingIsWrong) return false; // false stops submitting
      else return true; // do submit
    }
    

    还要注意@FranciscoAfonzo提到的getElentById错误

答案 1 :(得分:0)

我发现了自己的错误。看起来您不能将document.get与密码输入字段一起使用。我拿出了密码而且工作正常。如果我能从更多经验中得到一些意见,那就太棒了。

答案 2 :(得分:0)

一些建议:

  1. 在JavaScript中,使用===(等于)和!==(不等于)进行比较。

  2. 如果if循环中只有变量名,那也就足够了。 像:

    if (address)
    {
        window.alert("Please enter your address")
    }