Javascript 使用node和Express进行服务器端电子邮件验证
我正在开发一个web应用程序,我想使用javascript在服务器端进行电子邮件验证,但我对如何构造文档以及如何使其正常工作感到有点困惑 我使用的是node/Express,我的模板使用的是Jade。我希望我的用户登录页面将在用户单击开箱即用(使用AJAX调用)时立即验证电子邮件。我有一个名为lib的文件夹,其中有一个validation.js文件,我打算在其中保存所有验证代码 我还有一个navigation.js文件,我在其中使用所有AJAX调用 validation.jsJavascript 使用node和Express进行服务器端电子邮件验证,javascript,jquery,ajax,node.js,validation,Javascript,Jquery,Ajax,Node.js,Validation,我正在开发一个web应用程序,我想使用javascript在服务器端进行电子邮件验证,但我对如何构造文档以及如何使其正常工作感到有点困惑 我使用的是node/Express,我的模板使用的是Jade。我希望我的用户登录页面将在用户单击开箱即用(使用AJAX调用)时立即验证电子邮件。我有一个名为lib的文件夹,其中有一个validation.js文件,我打算在其中保存所有验证代码 我还有一个navigation.js文件,我在其中使用所有AJAX调用 validation.js function
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 false;
}
function checkPassword(userPassword){
var password = userPassword;
var passwordFilter = /^[a-zA-Z0-9!@#$%^&*]{6,16}$/
if (!passwordFilter.test(password.value)){
password.focus;
return false;
}
}
navigation.js
$(document).ready(function() {
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);
});
});
// Login Button
loginButton.click(function(e) {
// TODO: Input validation needed
var loginData = { username: $("#username").val(), password: $("#password").val() };
$( "#username" ).blur(function() {
if (!checkEmail(username)){
alert( "Handler for .blur() called." );
}
});
$( "#username" ).blur(function() {
if (!checkPassword(password)){
alert( "Handler for .blur() called." );
}
});
e.preventDefault();
$.post('/login', loginData, function(data) {
$('body').html(data);
});
});
..... (Still code after this but not relevant)
我编辑了我的代码,以便使用下面的一些注释。它仍然不工作,因为我没有收到警报消息。当我打电话时,它必须这样做:
if (!checkPassword(username)){
alert( "Handler for .blur() called." );
}
当我这样做的时候,我实际上是在传递用户名,还是应该以某种方式使用loginData
谢谢你的帮助 如果这是HTML5页面,您可以利用内置的电子邮件验证。不幸的是,这与您指定的正则表达式不同,但编写电子邮件正则表达式比最初看起来要困难 我还建议,既然您已经用javascript编写了验证,那么您可以在网页本身上应用相同的javascript验证。这将为您节省可能导致延迟的ajax调用
关于如何在单击out时应用验证,可以使用blur事件,jQuery提供了一种方便的方法 用户单击电子邮件输入框后,可以使用jQuery focusout或blur事件检查电子邮件:
$('#txtEmail').focusout(function(){
checkEmail();
});
我对我的问题和上述方法做了一些修改。当我运行代码时,我没有收到警报,我应该引用loginData吗?我还更改了validation.js,以便这些方法接受用户名和密码参数。密码的值可能未定义。此外,在click事件处理程序中使用$(“#username”).blur也没有意义。这些是独立的事件:模糊;onclick。看起来你有2个模糊事件处理程序,你可以组合