У меня возникли проблемы со следующим сценарием в IE7:
$.validator.addClassRules({
isemail: {
email: true
},
required: {
required: true
}
});
Это отлично работает в IE8 и других браузерах, однако я получаю следующую ошибку в IE7:
Line: 158
Char: 3
Error: Expected ':'
В моем коде эта строка:
isemail: {
Нет упоминания об отсутствии поддержки этой функции на сайте плагина jQuery validate (http://jqueryvalidation.org/jQuery.validator.addClassRules/), так что я здесь что-то не хватает?
Версия jQuery, которую я использую, - jQuery v1.10.2
. Версия проверки jQuery, которую я использую, - 1.11.1.
Любая помощь будет принята с благодарностью.
Ответить OP:
"Любая помощь будет принята с благодарностью".
Ваш код:
$.validator.addClassRules({
isemail: {
email: true
},
required: {
required: true
}
});
Как вы его написали, вы хотите использовать class="isemail"
и class="required"
в вашей разметке input
элементов.
<input class="isemail" type="text" ...
<input class="required" type="text" ...
ОДНАКО, по умолчанию вы уже можете поместить стандартные правила в атрибут class
без .addClassRules()
.
<input class="email" type="text" ...
<input class="required" type="text" ...
<input class="email required" type="text" ...
Метод .addClassRules()
предназначен для создания составных правил из наборов стандартных правил и назначения составного правила для нового имени class
.
Описание: Добавить метод составного класса - полезно для реорганизации общих комбинаций правил в один
class
.
Примеры запасов из документации
Для нескольких имен class
:
jQuery.validator.addClassRules({
myClass: {
required: true,
minlength: 2
},
myClass2: {
required: true,
digits: true,
minlength: 5,
maxlength: 5
}
});
или для одного имени class
:
jQuery.validator.addClassRules('myClass', {
required: true,
minlength: 2
}
});
Поскольку вы не показали нам никаких сложных правил, вам не нужен этот метод вообще. По умолчанию имя правила будет работать как имя class
. (есть исключения: только правила, которые могут быть объявлены с помощью логического значения, могут быть объявлены через class
.)
<input class="required" type="text" ...
<input class="email" type="text" ...
Вы могли бы даже имитировать составное правило (опять же, это без .addClassMethod()
).
<input class="required email" type="text" ...
Ответить OP:
"... [is]
.addClassRules()
не поддерживается в IE7?.... Нет упоминания об отсутствии поддержки этой функции на сайте плагина jquery validate, так что я здесь что-то не вижу?"
Возможно, вы обнаружили ошибку, определенную для IE7, однако, поскольку использование IE7 практически нулевое, я не думаю, что ожидаю исправить или даже беспокоиться об этом слишком много.
Однако, принимая мои простые предложения выше, вы отрицаете необходимость метода .addClassRules()
и будете продолжать поддерживать IE7.
EDIT:
Если вы не можете изменить разметку HTML, вы можете добавить в class
с помощью jQuery. Это назначит .email
для каждого элемента, который уже содержит .isemail
.
$(document).ready(function() {
$('.isemail').addClass('email'); // put this at the top
});
email
каждому элементу класса isemail
.