使用RSV jquery插件验证来自特定域的电子邮件

时间:2011-03-31 17:25:50

标签: javascript jquery regex jquery-plugins email-validation

我正在尝试使用Ben Keen的RSV Jquery插件来验证通过注册表单提交的电子邮件地址:用户只能提交属于特定域的电子邮件地址。我认为使用插件的reg_exp规则可能是一个解决方案,但我无法让它工作。 我是一个jquery新手,所以我可能犯了一些非常愚蠢的错误:有人能指出我正确的方向吗?

以下是我正在尝试使用的代码,改编自Keen的演示之一:

<script type="text/javascript">

  // a custom onComplete handler to prevent form submits for the demo
  function myOnComplete()
  {
    alert("The form validates! (normally, it would submit the form here).");
    return false;
  }

    var rules = [];

// standard form fields

rules.push("reg_exp,reg_exp_field1,/@mydomain\.tld$/gi,Please enter your valid e-mail (e.g. \"@mydomain\.tld\")");


$(document).ready(function() {
    $("#demo_form3").RSV({
    onCompleteHandler: myOnComplete,
    rules: rules
    });
}); 
</script>

使用上面的代码,当我提交有效的电子邮件地址时,这是一个以@ mydomain.tld结尾的地址,我总是收到提醒。我做错了什么?

2 个答案:

答案 0 :(得分:0)

没关系,经过进一步的研究,我找到了一个更简单的解决方案:按照this forum thread中的建议,我使用了jqueryValidate而不是rsv插件,并添加了自定义验证方法。 我在这里发布我的解决方案,也许对于像我这样的其他jquery新手来说可能有用!

  $(document).ready(function(){

$.validator.addMethod("gmail", function(value, element) {
    return this.optional(element) || /^[\w-\.]+@(gmail\.com|yahoo\.com)+$/i.test(value);
}, "Email address must contain gmail or yahoo addresses."); 

    $("#register_member_form").validate();
});

答案 1 :(得分:0)

我为很多代码编写了RSV。它非常强大。 但是,您错误地使用了它。

  1. 您应该定义自定义函数,而不是默认的电子邮件格式验证方法。
  2. 您应该将上面提到的“自定义函数”放入验证数组中,但不要将其放在“myOnComplete”方法中,此方法仅在传递所有验证时调用。
  3. 在RSV中,自定义函数只应返回“true”(传递时)或“数组”(失败时)。但在上面的示例中,您实现为“return false”。
  4. 无论如何,你以另一种方式解决了你的问题。 :-)那很好。