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

时间:2015-01-07 02:26:34

标签: javascript jquery

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

请帮我解决此问题。

$.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());
            }
        });
    });
});

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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