несколько валидаторов JQuery в одной форме - PullRequest
0 голосов
/ 22 декабря 2009

Я использую плагин jquery.validate и сталкиваюсь со следующей ситуацией:

<form id="myForm" ....>
    <input type="text" id="value1"/>

    <!-- Here is some code rendered from the partial -->
    <script type="text/javascript">
    $(document).ready(function() {
        var validator = $('#myForm').validate({
            rules: {
                value_from_partial: {
                    required: true
                }
            },
            messages: {
                value_from_partial: {
                    required: "Enter your firstname"
                }
            },
            submitHandler: function() {
                alert("submitted!");
            }
        });
    });
    </script>
    <input type="text" id="value_from_partial"/>
    <!-- End of code rendered from the partial -->
</form>
<script type="text/javascript">
    $(document).ready(function() {
        var validator = $('#myForm').validate({
            rules: {
                value1: {
                    required: true
                }
            },
            messages: {
                value1: {
                    required: "Enter your firstname"
                }
            },
            submitHandler: function() {
                alert("submitted!");
            }
        });
    });
</script>

Проверка, добавленная в частичную, не работает. Когда я удаляю .validate из основного html, тогда проверка в частичном работает. Кажется, что jquery.validate не позволяет, чтобы два вызова .validate были в одной форме. С другой стороны, я не могу назвать правила добавления для валидатора, так как я хочу, чтобы мой код валидации исходил из самого партиала (который на самом деле является плагином). Есть ли способ включить мою логику проверки вместе с частичной, и использовать jqury.validate вместо ручной проверки. Есть ли какая-либо другая структура проверки, которая может это позволить? Спасибо!

Ответы [ 3 ]

3 голосов
/ 22 декабря 2009

Вы правы, что не можете звонить validate() дважды. Ну, вы можете, но варианты не действуют во второй раз.

Два варианта:

  1. Создайте свои правила в HTML вместо JavaScript. Например, добавьте класс required для ввода вместо добавления обязательного правила. Валидатор поддерживает это.
  2. "Частичная" и "основная" части формы создают параметры объект , а затем вызывают validate в одном событии ready, передавая этот объект вместо вызова validate дважды.
0 голосов
/ 22 декабря 2009

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

var validator;

Затем вы захотите попробовать отсоединить метод submit первого вызова validate () внутри вашего второго блока document.ready:

$('#myForm').unbind('submit');
0 голосов
/ 22 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...