使用RSV jquery插件验证来自特定域的电子邮件
问题描述:
我想使用Ben Keen的RSV Jquery插件来验证通过注册表单提交的电子邮件地址:只允许用户提交一个e邮件地址属于特定的域。我认为使用插件的reg_exp规则可能是一个解决方案,但我无法让它工作。 我是一个jquery新手,所以我可能会犯一些非常愚蠢的错误:有人能指点我正确的方向吗?使用RSV jquery插件验证来自特定域的电子邮件
这里是我想要使用的代码,改编自敏锐的演示之一:
<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我总是收到警报。我究竟做错了什么?
答
我已经写了很多代码行的RSV。它非常强大。 但是,您使用不正确。
- 您应该定义一个自定义函数,而不是其默认的电子邮件格式验证方法。
- 您应该将上述“定制函数”放入验证数组中,但不要将其放入“myOnComplete”方法中,只有在所有验证都通过时才会调用此方法。
- 在RSV中,自定义函数只能返回“true”(通过时)或“数组”(失败时)。但在上面的示例中,您实现为“返回false”。
无论如何,你已经用另一种方式解决了你的问题。 :-) 那很好。
答
没关系,在进一步研究之后,我发现了一个更简单的解决方案:遵循this forum thread的建议,我使用了jqueryValidate而不是rsv插件并添加了自定义验证方法。 我在这里发布我的解决方案,也许它可能对像我这样的其他jquery新手有用!
$(document).ready(function(){
$.validator.addMethod("gmail", function(value, element) {
return this.optional(element) || /^[\w-\.][email protected](gmail\.com|yahoo\.com)+$/i.test(value);
}, "Email address must contain gmail or yahoo addresses.");
$("#register_member_form").validate();
});
嗨四维,谢谢你指出我的错误。当涉及到jQuery/JavaScript我是一个完整的新手,我正在通过试验和错误学习。 Thanx回复我的问题:-) – kikaweb 2011-08-12 15:24:34