0

我有一个脚本,它将在表单处理时隐藏提交按钮,以防止多次单击该按钮。最近似乎这并不是一直有效。

我可以验证每次都在加载验证 jQuery 文件。当我使用从我的服务器或 CDN 加载的文件时,我并没有什么不同。

该错误仅在从磁盘缓存加载文件时出现。我通过在 jQuery 文件后添加一个随机版本号暂时解决了这个问题,但我想知道使用磁盘缓存时可能导致中断的原因是什么?

浏览器控制台列出了这个错误:

custom-quote-form:21 Uncaught TypeError: $(...).validate is not a function
    at HTMLDocument.<anonymous> (custom-quote-form:21)
    at j (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at Function.ready (jquery.min.js:2)
    at HTMLDocument.I (jquery.min.js:2)

jquery.min.js 首先加载,然后是 CMS 缓存的 JS 文件,之后是 jquery 验证文件。

这是脚本

<script> 
    $(function() {
        $("form[name='customBuilder']").validate({
            // remove error label  
            errorPlacement: function(error, element) {},
            rules: {
                fname: "required",
                lname: "required",
                phone: "required",
                company: "required",
                Email: {
                    required: true,
                    email: true
                },
            },
            submitHandler: function(form) {
                $("#loading-img").css("display", "block");
                form.submit();
                var elem = $("#submitMessage");
                elem.css("display", "none");
                setTimeout(function() {
                    elem.css("display", "");
                }, 10000);
            }
        });
    }); 
< /script>
4

2 回答 2

0

A.Wolff 让我走上了正轨。从 jquery 验证插件链接中删除了 defer="defer"。它是由 CMS 自动添加的。

于 2017-11-14T20:45:38.720 回答
0

我对这种设置有类似的问题。快进,我按照 Chrome 开发工具的指南来提高页面的速度。它在页面的头部确定了一个渲染阻塞脚本(准确地说是 Jquery 库文件)。我(作为 ajax 事件调用的菜鸟)在脚本标签内添加了“异步”标签以异步加载它。

现在新问题来了,当我第一次加载页面时,一切正常。但是对于一些随机的后续重新加载会破坏 javascript,因为我正在以异步方式加载每个 javascript 文件,并且有些也从磁盘缓存中加载。所以我决定找到一些其他的优化方法,而不是让它以“异步”的方式加载。

于 2017-12-11T10:15:05.913 回答