我正在开发一个网络应用程序,我想在我的服务器端使用javascript进行电子邮件验证,但我对如何构建我的文档以及如何使其全部工作感到困惑。
我正在使用node / Express,我正在使用Jade作为我的模板。我希望我的用户登录页面即在用户点击开箱即可验证电子邮件(使用AJAX调用)。我有一个名为lib的文件夹,其中我有一个validation.js文件,我打算拥有所有验证码。
我还有一个navigation.js文件,我正在使用所有的AJAX调用。
validation.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 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?
感谢您的帮助。
答案 0 :(得分:0)
如果这是一个HTML 5页面,您可以利用内置的电子邮件验证。 http://www.the-art-of-web.com/html/html5-form-validation/不合时宜,这与您指定的正则表达式不同,但编写电子邮件正则表达式比最初显示的更难。
我还建议您,因为您已经使用javascript编写的验证,您可以在网页本身的javascript中应用相同的验证。这样可以避免引发ajax调用的潜在延迟。
就如何在点击时应用验证而言,您可以使用模糊事件,jQuery提供了一种方便的方法。 http://api.jquery.com/blur/
答案 1 :(得分:0)
您可以在用户使用jQuery焦点或模糊事件点击电子邮件输入框后查看电子邮件:
$('#txtEmail').focusout(function(){
checkEmail();
});