【问题标题】:jQuery Email Validation Fails on Backspace退格键上的 jQuery 电子邮件验证失败
【发布时间】:2011-11-25 19:23:57
【问题描述】:
function validate_email() {
    atsplit = $('input[name=email]').val().split('@');
    dotsplit = atsplit[1].split('.');
    if (atsplit.length == 2 && atsplit[0].length > 0 && dotsplit[dotsplit.length-1].length > 0 && dotsplit[dotsplit.length-2].length > 0) {
        $('#email').html('✔');
        valid_email = true; 
    }
    else {
        $('#email').html('');
        valid_email = false;
    }
}
$('*').live('change click focusout keyup submit', function(){
    validate_email();
});

我正在尝试验证电子邮件地址。如果电子邮件有效,则会在#email 范围内放置一个复选标记。除非您突出显示输入文本并按退格键(或者如果您按住退格键以便一键删除输入),否则一切正常。在这些情况下,无论触发什么事件(单击、聚焦等),复选标记都会保留。所有浏览器中的行为似乎都是相同的。有什么想法有什么问题吗?

【问题讨论】:

  • 您尝试过使用按键事件吗?
  • 我认为这将包含在 keyup 事件中,但我还是尝试添加它。这似乎没有什么不同。奇怪的是,在它卡在“已检查”上之后,直到您下次键入 @ 符号时才会解开...
  • 在if中添加console.log("Valided"),看按退格键时是否调用。
  • 另外,你为什么不使用电子邮件正则表达式来验证?
  • Sawny,我在哪里查看控制台日志?

标签: jquery validation events email backspace


【解决方案1】:

试试这个http://jsfiddle.net/Pq5Ut/,如果这对你有帮助,请告诉我。我知道我没有使用与您相同的电子邮件验证,但我觉得这可能是您想要的。

仅供参考,我使用的电子邮件正则表达式刚刚从 jQuery 验证插件中提取。

【讨论】:

  • 哇,这是一些正则表达式!只要我使用$('*').live() 来触发它,它就可以很好地工作。当我使用$('*').on() 触发时,我得到一个错误:Uncaught TypeError: Object [object Object] has no method 'on'. 为什么我没有使用live() 得到这个错误?
  • jQuery 1.7 中添加了 .on() 方法。您使用的版本似乎是
  • 好的,我升级到了新的 jQuery,效果很好。谢谢杰西B!我试图发布带有所有修复程序的最终代码,但我不被允许(声誉低于 100?)所以我想我不会......
  • 顺便说一下,我还想验证名字和姓氏。关于正则表达式的任何建议?还是应该只要求每个字符至少输入一个字符?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2015-06-15
  • 1970-01-01
  • 2015-11-09
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多