在keyup和tab上验证电子邮件

时间:2014-08-03 23:24:05

标签: javascript jquery

我成功处理了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();
}

就我运行代码而言,它运行正常。但是,我认为我处理标签的方式不对。由于keyup和tab-press将执行相同的操作,有没有更好的方法来处理这两个?

1 个答案:

答案 0 :(得分:0)

你的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));

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