以下代码的目标是,如果文本字段中的电子邮件地址有效,则提交按钮将变为活动状态。
我使用模糊工作,但它似乎不适用于键盘事件。 有什么想法吗?
$(document).ready(function(){
// default values
var email = $("#newsletter_email");
var button = $("#subscribe");
var a = $(email).val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
// disable submit
$(button).attr("disabled", "disabled");
$(button).css("background-color","#CCC");
$(email).keydown(function(event) {
if(filter.test(a)){
button.attr("disabled", "enable");
button.css("background-color","#663399");
}
});
});
答案 0 :(得分:2)
即使您在键盘事件上触发事件,该方法的其余部分也是错误的。
您根本无法使用该正则表达式验证所有合法的电子邮件地址,并且没有合理的正则表达式可以。
唯一可靠的方式是将数据的AJAX帖子执行到您的服务器,您应该在其中执行MX记录的动态DNS查找(如果那些'存在,域部分的A或AAAA记录。
对于它的价值,它实际上不适用于.keydown()
的原因是因为变量a
仅在外部函数的开头设置一次 - 您需要将调用移至$(email).val()
内的.keydown()
处理程序,以便每次按下某个键时都会获取其值。