Как использовать пользовательские методы проверки jQuery? - PullRequest
0 голосов
/ 11 июня 2018

Я использую проверку jQuery на нескольких формах в моем проекте.Некоторые из них имеют специфические и хитрые требования к валидации, и поэтому я написал методы валидации для их обработки обычным способом:

    $.validator.addMethod('fancyValidationTest', function (value, element, arg) { 
           ...code... });

Некоторые из этих методов необходимы в нескольких формах проектаи поэтому я помещаю определения методов в клочки кода, содержащие вызов валидатора формы - $('#form_id').validate()..}) или что-то еще.Но это глупо - я заканчиваю тем, что вырезал и вставлял один и тот же метод в несколько мест в моем проекте, когда, конечно, мне кажется, что я должен поместить методы в одно место в проекте, а затем получить доступ к ним по мере необходимости с помощью кода проверки.

Но пока не повезло.Я попытался переместить метод (ы) в файл проекта, который загружает кучу другого часто используемого кода JavaScript, но это приводит к неудивительной ошибке консоли TypeError: undefined is not an object (evaluating '$.validator.addMethod').Кстати, это проект, основанный на php, поэтому «файлы», содержащие формы и проверочный код, фактически создаются на лету, в отличие от статических файлов .html, которые где-то находятся на сервере.

Итак:Есть ли способ собрать все эти методы в одном месте и заставить код проверки найти их?Вырезание и вставка не могут быть правильной вещью здесь;спасибо!

1 Ответ

0 голосов
/ 11 июня 2018

Есть ли способ собрать все эти методы в одном месте и найти их с помощью кода проверки?

Он ничем не отличается от любого другого JavaScript или кода на стороне клиента.Не имеет значения, как создаются страницы, вы должны включать эти внешние файлы в на каждой странице , где бы вы ни хотели использовать эти сценарии.Большинство людей просто помещают их в общий заголовок или файл нижнего колонтитула.В качестве альтернативы, если они нужны только на одной странице, разместите их только на одной странице.

... но это вызывает неудивительную ошибку консоли TypeError: undefined is not an object (evaluating '$.validator.addMethod')

Тогда вы просто забыли включить плагин проверки или забыли поставить его до ваши пользовательские .addMethod() методы.

Это ничем не отличается от использования файла additional-methods.js этого плагина, который также не содержит ничего, кроме списка вызовов .addMethod().

Включите jQuery, затем включите плагин, затем включите любые дополнительные методы.

<!--// include jQuery //-->
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>

<!--// include the validation plugin //-->
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>

<!--// optionally include the additional methods //-->
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/additional-methods.js"></script>

<!--// include YOUR additional methods //-->
<script src="path-to-your-methods-file.js"></script>

<!--// NOW you call .validate() and initialize plugin //-->
<script>
    $(document).ready(function() { // <- ensures the HTML markup is loaded first
        $('#myform').validate({    // <- initialize plugin
            // rules, options, etc.
        });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...