Проверяйте при наборе в jquery, а не после размытия

У меня есть небольшая проблема, которую, вероятно, легко решить, но я пока не так хорош. Я написал этот простой код

$(document).ready(function(){
    $('#email').change(function(){
        var regexp = /^\w+[@]\w+\.\w{2,4}$/;
        if(regexp.test($(this).val())){
            document.getElementById("submit").disabled = false;
        }
    });
});

Он проверяет, является ли электронная почта действительной в форме, затем, если это так, - он включает кнопку ОТПРАВИТЬ. Проблема в том, что он проверяет электронную почту после того, как я нажимаю в другом месте, а НЕ во время набора текста. Так что в основном я должен щелкнуть где-нибудь за пределами поля электронной почты, а затем я могу нажать SUBMIT. Если я введу правильный адрес электронной почты и не нажму нигде за пределами этого поля, это не разблокирует ОТПРАВИТЬ. Что я должен изменить здесь? Есть идеи? Я любезно ценю все ответы. Заранее спасибо.

1 ответ

Решение

Попробуйте использовать

$('#email').keyup(function(){
    var regexp = /^\w+[@]\w+\.\w{2,4}$/;
    if(regexp.test($(this).val())){
        $("#submit").prop('disabled', false);
    }
    else $("#submit").prop('disabled', true);
});

или же

$('#email').on('keyup', function(){
    var regexp = /^\w+[@]\w+\.\w{2,4}$/;
    if(regexp.test($(this).val())){
        $("#submit").prop('disabled', false);
    }
    else $("#submit").prop('disabled', true);
});

Рабочий пример.

Другие вопросы по тегам