javascript onBlur不工作,以及如何连接javascript文件
我有两个javascript文件,用于验证电子邮件地址 validate.js:javascript onBlur不工作,以及如何连接javascript文件,javascript,jquery,validation,pug,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('Pleas
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();
}
});
…后面有更多代码,但不相关
我也在使用此jade模板:
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中,但即使这样,它也不起作用。我想把这些文件分开。我错过了什么明显的东西吗?我希望这样,一旦用户输入电子邮件并离开该字段,就会出现一条消息,警告电子邮件是否有效
谢谢你的帮助 您已经将电子邮件的值发送到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;
}
}
问题出在模糊事件还是检查邮件上?尝试在模糊后放置一个警报或console.log,确保对输入失去关注。单独的文件不应该是个问题。还检查了控制台中的错误吗?JavaScript字符串没有值字段 之后 sEmail变成了一个字符串 您正在将此字符串传递给checkEmail方法,并尝试从字符串中获取值:
if(!emailFilter.test(email.value)) {//...}
取代
if (!emailFilter.test(email)) {//...}
我不是在validate.js中调用它。这只是一个javascript文件,只有checkEmail方法。我正在navigation.js中使用它。我刚刚移除了onBlur,但它仍然不工作。就是这样。谢谢。事实上,只有当我的checkEmail函数在my navigation.js中,而不是在validation.js中时,这才有效。原因是什么?显示脚本导入,请阅读编辑,我在navigation.js的前几行添加了导入。为什么您不以与navigation.js相同的方式导入validate.js?我猜您正在使用?
if (!emailFilter.test(email)) {//...}