Как выполнить валидатор, используя плагин валидации jQuery, если выполняется какое-то условие - PullRequest
0 голосов
/ 10 ноября 2010

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

(я знаю, что уже существует метод «больше 3»), но я хотел убедиться, что вы можете добавлять собственные методы)

<script type="text/javascript">

        var _btnClicked = "";

        $(document).ready(function() {

            $.validator.addMethod('custom', function(value, element, param) { if (param) { return value > 3 } return true; });

            $("#form1").validate({
                rules: {
                    input1: { required: function(element) { return _btnClicked == 'div1'; } },
                    input2: { custom: function(element) { return _btnClicked == 'div2'; } } },
                messages: {
                    input1: "Required",
                    input2: "Greater than three"
                }
            });
        });

    </script>

<form id="form1">    
          <div id="div1" class="div1">
            <input id="input1" name="input1" type="text" class="div1"/>
            <input id="btn1" name="btn1" type="submit" value="Form 1" class="div1" onclick="_btnClicked = 'div1'; if (!$('#form1').validate().form()) { return false; }" />
          </div>

          <div id="div2" class="div2">
            <input id="input2" name="input2" type="text" class="div2"/>
            <input id="input3" name="input3" type="text" class="div2"/>
            <input id="btn2" name="btn2" type="submit" value="Form 2" class="div2" onclick="_btnClicked = 'div2'; if (!$('#form1').validate().form()) { return false; }" />
          </div>
     </form>

Моя проблема в том, что мне делать, если я хочу ограничить свой третий блок ввода максимальной длиной 3?

Я не могу добавить это правило, поскольку ему явно не передается значение 3, поэтому оно не знает, какова максимальная длина!

input3: { maxlength: function(element) { return _btnClicked == 'div2'; } }

Есть идеи?

Или лучшие способы достижения этого!?

1 Ответ

0 голосов
/ 11 июля 2014

Определите класс игнорирования (например, «.ignore») и добавьте этот класс к этим элементам, когда пользователь нажимает «другие» кнопки.

...