javascript:非常简单的验证不起作用

时间:2013-04-04 03:24:33

标签: javascript html

我无法弄清楚为什么这不起作用,因为我做的一切都是正确的。 这是一个简单的创建帐户表单。我为某些字段添加了验证码,如名称,电子邮件和密码。还有很多其他领域。但首先我要尝试这个。

喜欢这里: jsfiddle

和HTML的代码:                       名字

        <input type="text" name="fname" id="fname"/>



        <input type="text" name="lname" id="lname />          

        <input type="text" name="remail" id="remail" />


      New Pasword
     <input type="password" name="rpass" id="rpass"  />

       <input name="regis" type="submit" class="color2" id="id" value="Submit" />

这里的javascript代码:

     function validateRegis() {
//regex for fname and lname

var fname = $("#fname").val();

var lname = $("#lname").val();
  var patt_n = /[a-z]{2,20}/i;
//checking fname and lname for regex matching 
var ftest = patt_n.test(fname);
var ltest = patt_n.test(lname);

var remail = $("#remail").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9\_\.\-]+[a-zA-Z0-9\_\-]+@[a-zA-Z0-9]+[a-zA-Z0-9\.\-]+[a-zA-Z0-9]+\.[a-z]{2,4}$/;

var test = filter.test(remail);
var rpass = $("#rpass").val();
var patt = /[a-z0-9~!@#$%^&*()_\ ]/i;
var test2 = patt.test(rpass);


if (fname === "" || ftest === false) {
    alert("Please provide first name!");
    $("#fname").focus();
    return false;
} else if (lname === "" || ltest === false) {
    alert("Please provide Last name!");
    $("#lname").focus();
    return false;

} else if (remail === "" || test === false) {
    // 
    alert("Please provide email in correct format!");
    $("#remail").focus();
    return false;

} else if (rpass === "" || rpass.length < 8 || test2 === false) {
    alert("Please provide password!");
    $("#rpass").focus();
    return false;

} else if ((fname !== "") & (lname !== "") & (remail !== "") & (test === true) & (rpass >= 8) & test2 === true) {

    return true;
}
}

运行代码需要jquery。

1 个答案:

答案 0 :(得分:0)

问题是validateRegis功能在全局范围内不可用。

在小提琴UI左侧面板中,第二个选择框选择No Wrap in body,它可以正常工作。

演示:Fiddle

当您在那里选择onLoad时,脚本框架下的所有脚本都包含在匿名函数下,因此您的validateRegis方法将成为该匿名函数的本地成员。因此,当调用函数submit导致抛出Uncaught ReferenceError: validateRegis is not defined错误时,该函数将不可用。