2014-01-17 3 views
0

У меня есть два файла javascript, которые я использую для проверки адреса электронной почты.javascript onBlur не работает, и как подключить файлы 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 EDIT:

$(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 и вызывать методы, определенные в validate.js в navigation.js? Я попытался поместить код validate.js в navigation.js, но даже тогда он не сработал. Я хотел бы сохранить файлы отдельно. Мне что-то не хватает? Я хочу, чтобы после того, как пользователь вводит адрес электронной почты и покидает поле, сообщение должно появиться, если сообщение верное или нет.

Ваша помощь приветствуется.

ответ

0

Вы уже отправили электронное письмо в функцию checkemail. Таким образом, в функции checkEmail в validate.js удалить email.value во второй строке функции checkEmail

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; 
    } 
} 
+0

Я не называю его в validate.js. Это всего лишь файл javascript только с этим методом checkEmail. Я использую его в navigation.js. Я просто удалил onBlur, и он все еще не работает. –

0

Это размывание событие или checkEmail проблема? попробуйте поместить alert() или console.log() сразу после размытия (и не теряйте фокус на своем вводе). Отдельный файл не должен быть проблемой. А также вы проверяете наличие ошибок в консоли?

0

JavaScript string не имеет "value" поле

После

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

sEmail становится string.

Вы передаете эту строку checkEmail метода и попытаться получить «значение» из строки:

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

Заменить на

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

Вот оно. Спасибо. –

+0

Добро пожаловать – n1k1ch

+0

На самом деле, это работает только в том случае, если моя функция checkEmail находится в моей навигационной.js, а не когда она находится в validation.js по любой причине? –

Смежные вопросы