Как требовать разных правил в jQuery Validate для метода, который используется для нескольких страниц? - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть несколько контактных форм, которые используют один и тот же метод для проверки содержимого формы с помощью jQuery Validate.Некоторые страницы требуют полей, которые другие не делают.Мне нужно использовать операторы IF, чтобы определить, какая это страница, и если странице требуется поле, то ее следует добавить к параметру rules в вызове метода validate ().пример того, как это сделать, чтобы оно работало?Вот что мне нужно сделать (что, очевидно, не работает).Я не могу объявить все содержимое правил в переменной выше из-за пробелов:

$("#contactForm").validate( {
    rules: {
        name: {
            required: true
        },
        phone: {
            required: true
        },
        if ( page === "contactJoe" ) {
            subject: {
                required: true
                },
        }
        email: {
            required: true,
            email: true
        }
    }
});     

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Я бы использовал отдельный набор правил для каждой страницы, но если вы хотите придерживаться этого подхода, это будет работать для вашего примера:

$("#contactForm").validate( {
    rules: {
        name: {
            required: true
        },
        phone: {
            required: true
        },
        subject: {
            required: page === "contactJoe"
        },
        email: {
            required: true,
            email: true
        }
    }
});

Редактировать @ OP комментарий

Как бы я это сделал, если тема должна отображаться на нескольких страницах?

subject: {
    required: page === "a" || page === "b" || page === "c"
}

// or
var subjectRequiredPages = ["a", "b", "c"];
// ...
subject: {
    required: $.inArray(page, subjectRequiredPages) !== -1
}

// or
var subjectPages = {a: true, b: true, c: true};
// ...
subject: {
    required: subjectPages[page]
}
1 голос
/ 19 апреля 2011

Что если у вас есть метод с именем

    function SetupValidation(options){
        var defaults = {<defaults for program>};
        var settings = $.extend({}, defaults, options);
        return settings;
    }

Тогда каждая страница может вызывать SetupValidation со всем необходимым (телефон, электронная почта и т. Д.), И ваша «базовая» страница может использовать значение настроек, возвращаемое этим методом.

Это примет параметры по умолчанию и объединит любые параметры, которые вы передаете.

Например, если для параметра «Телефон» по умолчанию установлено значение «true», и вы передаете «False», оно изменится на «False».

...