Моя регистрационная форма проверяет правильные адреса электронной почты, а затем пытается сопоставить отправленный домен электронной почты со списком утвержденных доменных доменов. Он работает, однако правило совпадения возвращает ошибку, если отправленный домен электронной почты содержит заглавную букву.
Я попытался добавить ".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 элемента, как указано выше.
Используйте .toLowerCase(), где вы соответствуете значению. Как вы говорите, оно соответствует правильному, если значение находится в нижнем регистре, поэтому почему бы не преобразовать его в lowecase и чем соответствовать ему.
изменение
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