【问题标题】:Email validation not working电子邮件验证不起作用
【发布时间】:2012-09-03 06:54:32
【问题描述】:

我在 http://info.cfgt.com.au/diploma-of-management/sq1/ 上使用这个脚本

<script type="text/javascript">

jQuery(document).ready(function() {
function validateEmail(sEmail) {
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (filter.test(sEmail)) {
    return true;
}
else {
    return false;
}
}
});

jQuery(document).ready(function() {
jQuery('form').submit(function() {
    var sEmail = jQuery('#inf_field_Email').val();

    if (validateEmail(sEmail)) {
        alert('Email is valid');
        e.preventDefault();
    }
    else {
        alert('Invalid Email Address');
        e.preventDefault();
    }
});
});
</script>

无论我做什么,表单都会提交,并重定向到默认的 infusionsoft 错误页面。

我这辈子都想不通我错过了什么,而我已经到了第 7 个小时。

有什么想法吗?

干杯,

约翰·德特勒夫斯

编辑:

我现在正在使用以下,哪种有效:

<script>
jQuery(document).ready(function() {
jQuery('form').submit(function() {
email_address = jQuery('#inf_field_Email');           
email_regex = /^[a-z0-9\._]*[a-z0-9_]@[a-z0-9][a-z0-9\-\.]*[a-z0-9]\.[a-z]{2,6}$/i;
if(!email_regex.test(email_address.val())){
alert('Please enter a valid email');
return false;
}else{
alert('All Good!');
return true;
}
});
});
</script>

我现在唯一的问题是它会接受任何@anything 并且似乎根本不需要“.domain”。

【问题讨论】:

  • 试试 if (filter.match(sEmail)!=null) { return true; }

标签: jquery validation email


【解决方案1】:

当您有多个jQuery(document).ready(function() 块时,一个中定义的函数不能被另一个调用。见Can you have multiple $(document).ready(function(){ ... }); sections?

所以试着把它们组合成一个大函数,看看能不能解决问题。

另外,您是否考虑过使用 jQuery Validate 插件?

【讨论】:

  • 我已经考虑过了,但我在技术上并没有真正做到。
  • 双文档准备功能是我绝望中尝试的最后一件事。我应该在发帖前把它拿出来。
  • 原来 Wordpress 正在剥离我输入的代码。我已经从 wordpress 中删除了代码,并且正在排队到一个 js 文件中,它现在可以工作了。
【解决方案2】:

我检查了你的页面。您的页面中几乎没有错误..

首先,找不到您的 jQuery。

http://info.cfgt.com.au/wp-content/plugins/jquery.validity.1.2.0/jquery.js"

因为它没有将 $ 识别为函数。所以你的 $(function()) 给出错误。

关于电子邮件部分

将正则表达式更改为

var filter = /^[a-z0-9\._]*[a-z0-9_]@[a-z0-9][a-z0-9\-\.]*[a-z0-9]\.[a-z]{2,6}$/i;

【讨论】:

  • 嗯不确定那个.. Wordpress 本地加载 jquery,我使用 jQuery 作为前缀而不是 $
  • 我已将过滤器更改为您的正则表达式,但它仍然不在乎是否添加了 .domain。有点奇怪。感谢您的尝试!
猜你喜欢
  • 2017-05-27
  • 2012-08-19
  • 2019-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多