我有一个网站,jQuery将应用页面加载到索引页面的div中。
应用页面包含两个DIV .. 1)搜索表单,以及2)结果div。
搜索jQuery会将结果加载到结果div中。每个结果都有一个call-to-action按钮,jQuery加载到结果div中(单独留下搜索栏)。用户完成调用操作表单,然后jQuery将结果页面加载到结果页面中。
每次都是第一次完美无缺。但是,如果在加载结果页面后,用户再次从搜索栏中单击搜索,我将进入用户必须选择号召性用语按钮的页面,但会弹出一个javascript错误。
具体错误是:
TypeError: $('#cta-email').validate is not a function. (In '$('#cta-email').validate', '$('#cta-email').validate' is undefined)
此错误使得无法点击其他基于javascript的内容。刷新页面会修复它,但我无法弄清楚导致此脚本在第二次运行时导致错误的原因。
其他说明..几乎每个由jQuery加载的页面底部都有<script>
。我已经研究过没有通过AJAX加载等方式解决的脚本,但是我不确定这个问题是否存在,因为正如我所说,我可以完成整个功能一次,但是当出现错误时,就会出现错误。
如果我错过任何有助于解决此问题的信息,请与我们联系。
答案 0 :(得分:1)
看过演示后,问题似乎是在提交表单时重新加载资源(jQuery和jQuery validate)。这打破了jQuery验证。
以下是网络请求(提交表单后):
您可以看到results
重新加载资源
在查看results
后,我们会看到以下有问题的行:
<script async defer src="//maps.googleapis.com/maps/api/js?key=AIzaSyB36Tx2kI7o_o4tPsdiVJBf_wyPEf6r2dc"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/additional-methods.min.js"></script>