1

我的网站上有一个订阅表格,我正在尝试验证。当用户单击按钮注册时,将调用函数 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>
4

3 回答 3

1

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

  1. validateForm()您的手机输入字段中没有指定功能
  2. 如果您希望您的表单发送数据,请设置类型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
}

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

于 2013-05-05T06:12:10.343 回答
0

几个建议:

  1. 在 JavaScript 中,比较是使用===(equal to) 和!==(not equal to) 完成的。

  2. 如果你在 if 循环中只有变量名也足够了。喜欢:

    if (address)
    {
        window.alert("Please enter your address")
    }
    
于 2013-05-05T06:37:27.127 回答
0

我发现了我的错误。看起来您不能使用document.get带密码的输入字段。我拿出了密码,它起作用了。如果我能从更有经验的人那里得到一些关于原因的意见,那就太好了。

于 2013-05-05T06:04:12.777 回答