Плагин проверки JQuery требует электронной почты в некоторых случаях - PullRequest
2 голосов
/ 23 декабря 2011

У меня есть страница управления участниками, где клиент хочет, чтобы поле всегда было обязательным, и если пользователь является участником, то это должен быть адрес электронной почты. Если учетная запись предназначена для администратора, это не обязательно должен быть адрес электронной почты. Моей первой мыслью было «easy. Function (), как я делаю, когда иногда требуется поле».

Я использую плагин проверки JQuery. Это рассматриваемая строка.

ename: { required: true, email: function() { var retVal = ($("#mem_rights").val() == 4); alert(retVal); return retVal; }},

Предупреждение - это код отладки, который показывает, что функция оценивается правильно. Когда я нахожусь на странице администратора, она оценивается как ложная, но я все равно получаю сообщение об ошибке рядом с полем ввода, в котором говорится «Пожалуйста, введите действительный адрес электронной почты», если я сделаю значение не адресом электронной почты.

Что мне нужно сделать?

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

К сожалению, ни одно правило, кроме required, не принимает функцию зависимости или выражение по умолчанию.

Вот один из способов сделать это, переписав правило email по умолчанию (или добавив правило с именем вашегопо собственному выбору), так что он принимает функцию зависимости.

var oldEmail = $.validator.methods.email;

$.validator.addMethod("email", function(value, element, param) {
    return !param || oldEmail.call(this, value, element);
});

$("#test").validate({
    rules: {
        field: {
            required: true,
            email: {
                depends: function () {
                    return $("#require-email").is(":checked");
                }
            }
        }
    }
});

Пример: http://jsfiddle.net/rvsDs/

Если вы нервничаете из-за переопределения правила email по умолчанию(действительная проблема), вы можете просто назвать новое правило conditionalemail или что-то подобное.

0 голосов
/ 23 декабря 2011

Согласно документации, атрибут required также может быть выражением зависимости или обратным вызовом зависимости , который можно использовать для выполнения условных требований. Вы могли бы написать что-то вроде этого:

ename: {
  required: function(el) {
    return $("#mem_rights").val() == 4;
  }
}

Хотя, если значение не меняется, функция не нужна, просто оцените выражение следующим образом:

ename: { required: ($("#mem_rights").val() == 4) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...