我的注册表单会验证有效的电子邮件地址,然后尝试将提交的电子邮件的域与已批准的域扩展列表进行匹配。它有效,但如果提交的电子邮件域包含大写字母,则匹配规则将返回错误。
我曾尝试将“.tolowercase()”添加到元素ID(#s_email)中,但在应用于规则之前,我无法将其转换为小写。我应该针对过滤后的变量运行规则吗?
<script type="text/javascript">
$.validator.addMethod('matches', function(value, element, param) {
return this.optional(element) || value.match(param);
},'<?php _e('Please enter a valid email address.', 'reg_domain_check'); ?>');
$(document).ready(function() {
$('#s_email').rules("add", {matches: '<?php echo rdc_js_domain_list(); ?>', messages: {matches: '<?php _e('Sorry, your email address has not yet been approved for registration.', 'reg_domain_check'); ?>'}});
});
</script>
我看了一遍,无法找到上述元素ID规则的解决方案。
答案 0 :(得分:0)
在匹配值的地方使用.toLowerCase()。正如您所说的那样,如果值是小写的话,它匹配正确,那么为什么不将它转换为低位而不是匹配它。
更改
value.match(param);
到
value.toLowerCase().match(param);
现在您的代码变为
<script type="text/javascript">
$.validator.addMethod('matches', function(value, element, param) {
return this.optional(element) || value.toLowerCase().match(param);
},'<?php _e('Please enter a valid email address.', 'reg_domain_check'); ?>');
$(document).ready(function() {
$('#s_email').rules("add", {matches: '<?php echo rdc_js_domain_list(); ?>', messages: {matches: '<?php _e('Sorry, your email address has not yet been approved for registration.', 'reg_domain_check'); ?>'}});
});
</script