验证电子邮件上的键和标签

Validate email on keyup and tab

本文关键字:标签 电子邮件 验证      更新时间:2023-09-26

我成功地处理了keyup上的用户输入,但当用户按tab键时,我有一个问题要处理。

这是我目前的代码:
var doneTypingInterval = 1000;
// Handle on keyup
$('#f-name').keyup(function() {
    clearTimeout( typingTimer );
    if($(this).val) {
        typingTimer = setTimeout( doneTypingUsername, doneTypingInterval );
    }
});
// Handle on tab-press
$('#f-name').on(function(e) {
    var keyCode = e.keyCode || e.which;
    clearTimeout( typingTimer );
    if(keyCode == 9) {
        e.preventDefault();
        typingTimer = setTimeout( doneTypingUsername, doneTypingInterval );
    }
});
// Error handler
function doneTypingUsername() {
    if($('#f-name').val() == '') {
        $('#f-name').siblings('.case1').fadeIn(500);
        $('#f-name').siblings('.case2').hide();
        valid_name_f = false;
    } else {
         if(!isValidUsername($('#f-name').val())) {
            $('#f-name').siblings('.case1').hide();
            $('#f-name').siblings('.case2').fadeIn(500);
            valid_name_f = false;
        } else {
            $('#f-name').siblings('.case1').hide();
            $('#f-name').siblings('.case2').hide();
            valid_name_f = true;
            set_name_timer = false;
        }
    }
    checkForm();
}

就我运行的代码而言,它工作得很好。然而,我认为我处理tab-press的方式是不对的。既然按下键和按下tab将执行相同的事情,是否有更好的方法来处理这两个一起?

你的jquery显示

$('#f-name').keyup(function() {

$('#f-name').on(function(e) {

使用

可以更有效率
function functionName(e){
    //do your timer and validation here
}
$(document).on('keyup', '#f-name', functionName(e));
$(document).on('blur', '#f-name', functionName(e));

虽然这不是最干净的解决方案,但它应该在两种情况下完成您的电子邮件验证