2013-05-05 165 views
1

我在我的网站上有一个订阅表单,我正在验证。当用户点击按钮注册时,函数validate()被调用并且字段应该被验证,但是我没有得到它的工作。JavaScript表单验证代码没有给出预期的结果

显然在我的代码中有一些错误。我试图用我所拥有的一点知识来解决它,但无法让它起作用。如果你能指出我正确的方向,我会做什么错误,我将不胜感激。

代码如下:

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> 
+1

你可以把你的HTML代码的一部分? – polin 2013-05-05 05:45:42

+0

我添加了HTML代码感谢您的意见和帮助 – 2013-05-05 05:53:53

+0

@TimothyCoetzee检查这个http://jsfiddle.net/RXR7t/ – PSL 2013-05-05 06:01:24

回答

0

我发现我错了。它看起来像你不能使用带有密码输入字段的document.get。我拿出密码,它的工作。如果我能从更多经验的人那里获得一些意见,那将是非常好的。

+1

你可以做那。问题是“密码”不是一个id,它是一个类型。你忘了给该字段添加一个ID。 – 2013-05-05 06:09:57

+0

此外,你有“getElen”,而不是getElement其中之一 – 2013-05-05 06:10:43

1

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

  1. 有,如果你希望你的形式发送数据在手机中输入字段
  2. 没有指定validateForm()功能,设置类型submit,不button您提交按钮
  3. ,如果你想停止提交表单当事情没有填充,勾onsubmit事件的形式为:

    <form onsubmit="return validate()"> ... // note the return keyword 
    

和脚本

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

也注意到@FranciscoAfonzo

0

一对夫妇的建议中提到的getElentById错字:使用===

  1. 在JavaScript comparisions完成(等于)和!==(不等于)。

  2. 如果在if循环中只有变量名也足够。 像:

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

==是比较,===是严格比较https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comparison_Operators – 2013-05-05 06:48:22