我有一个脚本会在表单处理时隐藏提交按钮,以防止多次点击按钮。最近似乎这一直不起作用。
我可以验证每次都加载验证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>
答案 0 :(得分:0)
A.Wolff让我走上正轨。从jquery验证插件链接中删除了defer =“defer”。它是由CMS自动添加的。
答案 1 :(得分:0)
我在这种设置方面遇到了类似的问题。快速转发,我遵循Dev Tools of chrome的指导方针来提高页面的速度。它已在页面的头部标识了一个渲染阻止脚本(准确的Jquery库文件)。我(在ajax的事件调用中是一个菜鸟)添加了&#34; async&#34;脚本标记内的标记以异步方式加载它。
现在新问题到了,当我第一次加载页面时一切正常。但是对于一些随机的后续重新加载打破了javascript,因为我以异步方式加载每个javascript文件,并且一些也从磁盘缓存加载。所以我决定找到一些其他的优化方法,而不是将其加载到&#34; async&#34;方式。