Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重用自定义jQuery验证方法?_Jquery_Jquery Validate - Fatal编程技术网

如何重用自定义jQuery验证方法?

如何重用自定义jQuery验证方法?,jquery,jquery-validate,Jquery,Jquery Validate,我在项目中的许多表单上使用jQuery验证。其中一些具有特定且棘手的验证需求,因此我编写了验证方法,以通常的方式处理这些需求: $.validator.addMethod('fancyValidationTest', function (value, element, arg) { ...code... }); 其中一些方法在项目中的一些表单中是需要的,因此我将方法定义放入包含对表单验证程序调用的大量代码中--$(“#form_id”).validate()…}

我在项目中的许多表单上使用jQuery验证。其中一些具有特定且棘手的验证需求,因此我编写了验证方法,以通常的方式处理这些需求:

    $.validator.addMethod('fancyValidationTest', function (value, element, arg) { 
           ...code... });
其中一些方法在项目中的一些表单中是需要的,因此我将方法定义放入包含对表单验证程序调用的大量代码中--
$(“#form_id”).validate()…}
或其他任何内容。但这是愚蠢的——我最终将同一个方法剪切并粘贴到项目中的多个位置,而我确实应该将这些方法放在项目中的一个位置,然后让验证代码根据需要访问它们

但到目前为止,运气不好。我曾尝试将该方法移动到一个项目文件中,该文件加载了大量其他常用的javascript代码,但这会产生一个不足为奇的控制台错误
TypeError:undefined不是一个对象(评估'$.validator.addMethod')
。顺便说一句,这是一个基于php的项目,因此包含表单和验证代码的“文件”实际上是动态构建的,而不是位于某个服务器上的静态.html文件

那么:有没有办法将所有这些方法放在一个地方,让验证代码找到它们?在这里,剪切和粘贴不是正确的做法;谢谢

有没有办法将所有这些方法放在一个地方,让验证代码找到它们

它与其他JavaScript或客户端代码没有什么不同。不管页面是如何构造的,只要您想使用这些脚本,就必须在每个页面上包含这些外部文件。大多数人只是把它们放在公共页眉或页脚文件中。或者,如果只在一页上需要它们,则只将它们放在一页上

。。。但这会产生一个不足为奇的控制台错误
TypeError:undefined不是一个对象(评估“$.validator.addMethod”)

然后,您只是忘记了包含验证插件,或者忘记将它放在自定义的
.addMethod()
方法之前

这与使用该插件的
附加方法.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>


$(document).ready(function(){//得到了/谢谢!我的方法文件加载到了错误的位置…#duh