【问题标题】:Check during typing in jquery, not after blur在输入 jquery 期间检查,而不是在模糊后检查
【发布时间】:2012-07-26 16:46:18
【问题描述】:

我有一个可能很容易解决的小问题,但我还没有那么好。我已经写了这个简单的代码

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

它检查电子邮件在表单中是否有效,如果是,则启用提交按钮。问题是它在我点击其他任何地方后验证电子邮件,而不是在打字期间。所以基本上我必须点击电子邮件字段之外的某个地方,然后我可以点击提交。如果我键入正确的电子邮件并且不会单击此字段之外的任何位置,则不会解锁提交。我应该在这里改变什么?有任何想法吗?我很感激所有的答案。提前谢谢你。

【问题讨论】:

标签: jquery form-submit submitchanges disabled-control


【解决方案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);
});

Working Example.

【讨论】:

  • 谢谢Sheikh Heera,不幸的是它没有解锁提交。实际上它确实如此,但是如果我不手动输入地址(但开始输入然后从以前条目的提示列表中选择它)它不会解锁提交。可能是什么原因?
  • 那么不要删除你的.change()处理程序。
  • 我不太明白。我不能同时使用 .change 和 .keyup,可以吗?
  • Sheikh Heera 做得很好,但是如果您开始输入,然后出现带有提示的小下拉菜单并选择其中任何一个(以前存储在内存中的电子邮件) - 您将无法按提交。它仅在您手动输入最后一个字符时才有效。你懂我的意思吗?它在您发送的示例中也可见。
  • 试试<input type="text" name="email" id="email" autocomplete="off" />,检查this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 2023-04-07
  • 2011-06-18
  • 2015-07-09
  • 2016-11-27
相关资源
最近更新 更多