Плагин проверки JQuery: добавить пользовательский метод - PullRequest
0 голосов
/ 17 апреля 2010

Мне нужно несколько советов о том, как добавить метод валидации в плагин jquery validate. Я понял, что мне нужно использовать функцию плагина addMethod () , но как именно заставить его делать то, что мне нужно ... Вот я!

Первый вопрос моей формы - выбор радиовхода. Каждый радиовход, если он выбран, показывает подвопрос из нескольких флажков.

Что бы я хотел, чтобы моя проверка прошла: - убедитесь, что выбран один радиовход - убедитесь, что установлен хотя бы один флажок, относящийся к радиовходу.

По сути, исходя из собственной логики плагина проверки, я бы посчитал длину селектора и, если его нет, вернул сообщение об ошибке. Примерно так:

var weekSelected = ($('input.seasonSelector:checked input.weekSelector:checked',form).length > 0);
if(!weekSelected){
return 'Please select a week inside that season';
}

Как превратить это в метод плагина проверки?

UPDATE

вот успешный ответ, основанный на ваших отзывах:

$('#newInscription').validate({
        rules: {
            "season_id": "required",
            "weeks[]": {
                required: {
                    depends: function() {
                        return $(this).parents(".seasonSelector:checked");
                    }
                }
            }
        }
        ,
...

1 Ответ

2 голосов
/ 17 апреля 2010

Почему бы не сделать радио обязательным элементом, а каждый подвопрос - обязательным элементом, но зависящим от соответствующего радио? Вы должны быть в состоянии сделать это, просто добавив правила. Будет проще, если у каждой группы флажков будет одинаковое имя.

$("form").validate({
     rules: {
         "Season": "required",
         "SpringWeeks": {
              required: {
                   depends: function() {
                       return $(".seasonSelector:checked").val() == "Spring";
                   }
              }
         }
         ...
});

<input type="radio" name="Season" value="Spring"  />
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...