我正在使用这段代码来检查电子邮件是否可用。有一个错误,我无法找到解决方法。这不是一个严重的错误,但我希望我的剪辑没有错误:
//em defined above this snip
$("#email").change(function() {
var e = $("#email").val();
var eregex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(eregex.test(e)){
em.removeClass("text-danger");
em.addClass("text-warning");
setTimeout(em.text("Email valid. Checking."),500);
//1
$.get("/box/check.php?m=2&q="+encodeURIComponent(e),function(data,status) {
//2
if(!(data=="0")) {
em.text("Oops! This email is already registered.");
} else {
em.text("Great!");
}
});
} else {
em.text("Email is invalid.");
}
});
我追踪了错误,似乎发生在上面评论的// 1和// 2之间。
我一直有:Uncaught SyntaxError:我的Chrome开发者控制台上的意外标识符。
如果我放var e = encodeURIComponent(e);
,正则表达式将无法正常工作。
答案 0 :(得分:1)
我预计问题是setTimeout(em.text("Email valid. Checking."),500);
。
setTimeout要求在延迟后执行一个函数(或它可以评估的字符串)。此代码将评估并返回一个jQuery对象。当setTimeout尝试执行此对象时,您会收到错误。删除超时,并在该行上只有em.text("Email valid. Checking.");
应该解决我认为的问题