包含在另一个 js 文件中的多个 JS 文件有时不起作用

Mutilpe JS file included in another js file sometimes not working

我找到了如何将多个 js 文件包含到另一个 js 文件中,但是我面临的 1 个问题是这个函数有时会被加载,有时不会,因此有时请求直接进入服务器进行服务器端验证而不执行客户端验证。

请帮我解决这个问题。

$.when(
        $.getScript('../../public/js/jquery.validate.min.js'),
        $.getScript('../../public/js/additional-methods.min.js'),
        $.Deferred(function(deferred) {
            $(deferred.resolve);
        })
        ).done(function() {

    $(function() {

        $("#login").validate({
            errorClass: "state-error",
            validClass: "state-success",
            errorElement: "em",
            rules: {
                email: {
                    required: true,
                    email: true,
                    minlength: 6,
                    maxlength: 50
                },
                password: {
                    required: true,
                    minlength: 6
                }
            },
            messages: {
                email: {
                    required: 'Enter your Email ID',
                    email: 'Enter a VALID Email ID',
                    minlength: 'Enter a VALID Email ID',
                    maxlength: 'Email ID can not be more than 50 characters'
                },
                password: {
                    required: 'Enter your Password',
                    minlength: 'Password must be minimum of 6 characters'
                }
            },
            highlight: function(element, errorClass, validClass) {
                $(element).closest('.field').addClass(errorClass).removeClass(validClass);
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).closest('.field').removeClass(errorClass).addClass(validClass);
            },
            errorPlacement: function(error, element) {
                error.insertAfter(element.parent());
            }
        });
    });
});

从您的代码示例来看,似乎是在您尝试提交后加载了代码文件。 您可以采取的几种解决方案是复制并粘贴其他文件中的代码,以便在您的匿名函数启动之前执行和读取该代码,以便该函数可用于客户端验证。另一种解决方案是将它们全部按顺序放在页面上并以这种方式加载它们。最后一个解决方案是禁用提交按钮,直到函数准备就绪。 但是,从这个小片段来看,您根本不需要将它们加载到这个 javascript 文件中。不要害怕页面上有多个js文件。

听起来您可能想使用合适的模块加载器...

Javascript 的两大流行模块格式是 AMD (Require JS) and CommonJS (modules for it)

我建议使用 requireJS,因为它通常对浏览器更好,因为它是异步的。