javascript onBlur无法正常工作,以及如何连接javascript文件

时间:2014-01-17 14:35:25

标签: javascript jquery validation pug

我有两个用于验证电子邮件地址的javascript文件。

validate.js:

function checkEmail(userEmail) {

    var email = userEmail
    var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

    if (emailFilter.test(email.value)) {
    //alert('Please provide a valid email address');
    //email.focus;
    return true;
    }
    else{
        return false
    }
}

navigation.js编辑:

$(document).ready(function() {

//ADDED IMPORTS
var imported = document.createElement('script');
imported.src = 'lib/validation.js';
document.head.appendChild(imported);


    console.log("DOCUMENT IS READY!");

    var viewsWrapper = $("#views-wrapper");
    var loginButton = $("#login-button");
    var registerButton = $("#register-button");

    // Login Link
    // TODO: Unclear if needed
    $("ul li.login").click(function() {
        $.get('/login', function(data) {
            viewsWrapper.html(data);
        });
    });

    $('#usernamefield').blur(function() {
        var sEmail = $('#usernamefield').val();
        if ($.trim(sEmail).length == 0) {
            alert('Please enter valid email address');
            e.preventDefault();
        }
        if (checkEmail(sEmail)) {
            alert('Email is valid');
        }
        else {
            alert('Invalid Email Address');
            e.preventDefault();
        }
    });

...(更多代码如下,但不相关)

我也在使用这个玉石模板:

login.jade:

form(action="")
    key EMAIL
        input(type="text", name="username", id="usernamefield")
        p hello world
    br
    key PASSWORD
        input(type="text", name="password", id="passwordfield")
        p hello world

    br
    input(type="submit", name="loginButton", id="login-button", value="LOGIN")

我的问题是,当我在电子邮件字段中输入内容时,在任何情况下都不会收到警告消息。我是否可以分开javascript文件并调用我在navigation.js中的validate.js中定义的方法?我尝试将validate.js代码放在navigation.js中,但即使这样它也无效。我想保持文件分开。我错过了一些明显的东西吗我想要它,以便一旦用户输入电子邮件,并离开该字段,如果电子邮件有效,则应显示一条消息警告。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您已经将电子邮件的价值发送到checkemail功能。因此在validate.js中的checkEmail函数中删除第二行函数checkEmail中的email.value

function checkEmail(userEmail) {
    var email = userEmail
    var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

    if (!emailFilter.test(email)) {
        //alert('Please provide a valid email address');
        email.focus;
        return false;
    }
}

答案 1 :(得分:0)

是模糊事件还是checkEmail问题?尝试在模糊之后放置alert()console.log()(并确保失去对输入的关注)。单独的文件不应该是一个问题。还要检查控制台中的错误吗?

答案 2 :(得分:0)

JavaScript string没有“value”字段

var sEmail = $('#username').val();

sEmail成为string

您将此字符串传递给checkEmail方法,并尝试从字符串中获取“value”:

if(!emailFilter.test(email.value)) {//...}

替换为

if (!emailFilter.test(email)) {//...}