我有两个用于验证电子邮件地址的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中,但即使这样它也无效。我想保持文件分开。我错过了一些明显的东西吗我想要它,以便一旦用户输入电子邮件,并离开该字段,如果电子邮件有效,则应显示一条消息警告。
感谢您的帮助。
答案 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)) {//...}