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