Javascript 如何在使用jQuery进行电子邮件验证时在keypress上添加另一条语句

Javascript 如何在使用jQuery进行电子邮件验证时在keypress上添加另一条语句,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,验证工作正常,如果输入了有效的电子邮件,则会显示一个隐藏框,如果无效,则会在覆盖图上显示消息错误,但如何检查是否键入或返回?有什么想法吗,伙计们 这是我的代码,也可以是: 函数validateEmail(){ var validEmail=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; $(“#用户_电子邮件”).blur(函数(){ if(有效性测试(该值)){ $('.masked check').fadeIn(300) } 否则{ $('.masked che

验证工作正常,如果输入了有效的电子邮件,则会显示一个隐藏框,如果无效,则会在覆盖图上显示消息错误,但如何检查是否键入或返回?有什么想法吗,伙计们

这是我的代码,也可以是:

函数validateEmail(){
var validEmail=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
$(“#用户_电子邮件”).blur(函数(){
if(有效性测试(该值)){
$('.masked check').fadeIn(300)
}
否则{
$('.masked check')。淡出(300);
$('.overlay')。追加('');
showOverlay($('#errors').html('请输入有效的电子邮件…');
}
}); 
}
validateEmail();
我不确定这是否是一种方法,但现在对我来说,唯一的问题是听不到按键向上或向下。这里是更新的我不确定这是最好的方式做它,但目前的工作

    function validateEmail() {
        var validEmail = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        $('#user_email').blur(function(){

        $('.masked-check').hide();

            if (validEmail.test(this.value)) {
                $('.masked-check').fadeIn(300)
            }
            else {
                $('.masked-check').fadeOut(300);
                $('.overlay').append('<div class="alert alert-error" id="errors"></div>');
                showOverlay($('#errors').html('Please enter a valid email...'));
            }

            if ($('#user_email').val()=='') {
                $('.masked-check').hide()
            }

        }); 
    }

    validateEmail();
函数validateEmail(){
var validEmail=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
$(“#用户_电子邮件”).blur(函数(){
$('.masked check').hide();
if(有效性测试(该值)){
$('.masked check').fadeIn(300)
}
否则{
$('.masked check')。淡出(300);
$('.overlay')。追加('');
showOverlay($('#errors').html('请输入有效的电子邮件…');
}
如果($('#用户电子邮件').val()=''){
$('.masked check').hide()
}
}); 
}
validateEmail();

我相信您想要实现的是在每次按键后运行电子邮件验证,并不断通知用户他们的电子邮件是否有效,直到有效为止

有一个jQuery
.keypress()
事件来标识按键事件

我在这里工作:

编辑:我相信彼得下面的答案要好得多:


他建议使用一个更好的正则表达式和
.keyup()
事件来解决使用
.keypress()

时出现的退格问题。我相信您试图实现的是在每次按键后运行电子邮件验证,并不断通知用户他们的电子邮件是否有效,直到有效为止

有一个jQuery
.keypress()
事件来标识按键事件

我在这里工作:

编辑:我相信彼得下面的答案要好得多:


他建议使用更好的正则表达式和
.keyup()
事件来解决使用
.keypress()
时出现的退格问题。我喜欢基于有效/无效输入淡入/淡出的想法

我玩了一会儿,下面的内容似乎对我有用:

请注意,我根据以下回复将regex改编为电子邮件:


此外,keyup最适合我,因为keypress不能处理退格(解决方案如下:)

我喜欢基于有效/无效输入淡入/淡出的想法

我玩了一会儿,下面的内容似乎对我有用:

请注意,我根据以下回复将regex改编为电子邮件:

此外,keyup最适合我,因为keypress没有处理退格(解决方案如下:)

将您的函数“validateEmail”更改为以下内容:

function validateEmail(){

    var validEmail = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    $('#user_email').keydown(function(event){
        if (event.keyCode !== 13) {
            return;
        }
        if (validEmail.test(this.value)) {
            $('.masked-check').fadeIn(300)
        }
        else {
            //$('.masked-check').fadeOut(300);
            alert('Please enter a valid email');                                
        }
    });    
}
将函数“validateEmail”更改为以下内容:

function validateEmail(){

    var validEmail = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    $('#user_email').keydown(function(event){
        if (event.keyCode !== 13) {
            return;
        }
        if (validEmail.test(this.value)) {
            $('.masked-check').fadeIn(300)
        }
        else {
            //$('.masked-check').fadeOut(300);
            alert('Please enter a valid email');                                
        }
    });    
}

您可能不想在
keydown
上执行此操作。。。例如,如果我正在键入电子邮件地址:
myemail@email.com
,我会获得我按下的每个字符的覆盖,直到电子邮件有效为止-在上面的示例中,这大约是16次。您可能不想在
键下执行此操作。。。例如,如果我正在键入电子邮件地址:
myemail@email.com
,我会得到我按下的每个字符的覆盖图,直到电子邮件有效为止,这在上面的示例中大约是16次。嘿,谢谢你的参考,老实说,我不希望:)是的,我的答案“回答了他的问题”,但你的“解决了问题”。:)嘿,谢谢你的推荐,老实说,我没想到:)是的,我的答案‘回答了他的问题’,但你的‘解决了问题’:)
function validateEmail(){

    var validEmail = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    $('#user_email').keydown(function(event){
        if (event.keyCode !== 13) {
            return;
        }
        if (validEmail.test(this.value)) {
            $('.masked-check').fadeIn(300)
        }
        else {
            //$('.masked-check').fadeOut(300);
            alert('Please enter a valid email');                                
        }
    });    
}