JQuery проверить разные поля в зависимости от флажка

0

Я пытаюсь использовать плагин проверки jQuery для проверки формы, которую я имею в одном из моих приложений.

Форма (упрощенная) выглядит следующим образом:

<form id="my_form" action="#" method="post" novalidate="novalidate">
    <input id="my_hidden_input" type="text" style="display:none;">
    <input id="my_select_checkbox" class="checkbox" type="checkbox" value="1">
    <select id="my_select_1" class="select valid" type="select">
    <select id="my_select_2" class="select valid" type="select">
</form>

То, что я пытаюсь сделать, это проверить следующее: если флажок установлен, я проверяю, что значение выбрано в моем первом выборе, и если флажок не установлен, я проверяю выбранное значение моего второго списка.

Я попробовал что-то вроде:

$('#my_form').validate({ // initialize the plugin
    rules: {
        my_hidden_input:{
            "checkboxSelect": true,
        },
    },
    submitHandler: function (form) { // for demo
        console.log($("#monitors_start").value);
        return false;
    }
});


jQuery.validator.addMethod(
    "checkboxSelect",
    function() {
        if ($("#my_select_checkbox").attr('checked'))
            return $("#my_select_1").val();
        else
        return $("#my_select_2").val();
    }, "test addMethod"
);

Но, похоже, я не получаю это правильно... Если кто-нибудь может помочь, это будет очень полезно!

Благодаря !

  • 1
    Ваша функция вызывается?
  • 1
    как jsfiddle.net/arunpjohny/7Kscj/8
Показать ещё 3 комментария
Теги:
jquery-validate

1 ответ

2
Лучший ответ

Вы можете использовать параметр зависимости, например

var validator = $('#form').validate({
    rules: {
        my_select_1: {
            required: {
                depends: function () {
                    return $('#my_select_checkbox').is(':checked')
                }
            }
        },
        my_select_2: {
            required: {
                depends: function () {
                    return !$('#my_select_checkbox').is(':checked')
                }
            }
        }
    },
    messages: {}
});

Демо: скрипка

  • 0
    Отлично ! Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню