【问题标题】:javascript onBlur not working, and how to connect javascript filesjavascript onBlur 不起作用,以及如何连接 javascript 文件
【发布时间】:2014-01-17 14:35:25
【问题描述】:

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

验证.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 中,但即便如此它也不起作用。我想将文件分开。我错过了一些明显的东西吗?我想要这样,一旦用户输入电子邮件并离开该字段,如果电子邮件有效与否,应该会出现一条消息警告。

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery validation pug


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      JavaScript string 没有“value”字段

      之后

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

      sEmail 变为 string

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

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

      替换为

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

      【讨论】:

      • 就是这样。谢谢。
      • 实际上,这仅在我的 checkEmail 函数在我的 navigation.js 中时才有效,而当它在 validation.js 中时,这有什么原因吗?
      • 请显示您的脚本导入
      • 阅读编辑,我在 navigation.js 的前几行添加了导入
      • 为什么不导入 validate.js 和 navigation.js 一样(我猜你用的是<script src="..." />
      【解决方案3】:

      您已经将 email 的值发送到 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;
          }
      }
      

      【讨论】:

      • 我没有在 validate.js 中调用它。这只是一个只有 checkEmail 方法的 javascript 文件。我在 navigation.js 中使用它。我刚刚删除了 onBlur,它仍然无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2014-03-25
      • 2011-07-12
      • 2015-02-09
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      相关资源
      最近更新 更多