我有一个带有输入字段的基本表单,它使用来自jQuery Validation Plugin(http://jqueryvalidation.org/)的客户端验证。该表单在我们的生产网站上运行正常,但出于某种原因,当我将其插入Optimizely测试时,我在所有IE中都收到以下错误(FF,Chrome和Safari都很好):
Unable to get property 'setDefaults' of undefined or null reference
我的js脚本在下面......
jQuery.validator.setDefaults({
debug: false //If true, the form is not submitted and certain errors are displayed on the console
});
jQuery("#myForm").validate({
submitHandler: function(form) {
form.submit();
},
rules: {
//script for rules
},
messages: {
//script for messages
}
});
jQuery().ready(function() {
jQuery("#myForm").validate();
});
是否有人能够查看我的语法是否有问题或指向正确的方向?
由于
答案 0 :(得分:1)
默认情况下,Optimizely使用jQuery 1.6.4版。确保您没有在Optimizely中覆盖您的JQuery设置,并使用低于1.6.4的JQuery版本或除了您的插件测试之外的任何版本才能使用。
https://help.optimizely.com/hc/en-us/articles/202480860-Project-Settings
您的验证插件仅经过测试,可与JQuery版本1.6.4,1.7.2,1.8.3,1.9.1和1.11.1配合使用。
答案 1 :(得分:0)
是否有人能够看到我的语法是否有问题
这里的另一个问题是你在同一张表格上两次调用.validate()
方法......
jQuery.validator.setDefaults({
debug: false
});
jQuery("#myForm").validate({ // FIRST CALL
submitHandler: function(form) {
form.submit();
},
rules: {
// script for rules
},
messages: {
// script for messages
}
});
jQuery().ready(function() {
jQuery("#myForm").validate(); // SECOND CALL IS IGNORED
});
.validate()
方法仅用于初始化表单上的插件,并且始终忽略任何后续调用。因此,插件会评估代码中的第一个.validate()
方法,并且插件会忽略.validate()
处理程序中的.ready()
方法。
您可以简单地将所有内容放在DOM就绪处理程序中......
jQuery().ready(function () {
jQuery.validator.setDefaults({
debug: false
});
jQuery("#myForm").validate({ // FIRST & ONLY CALL
// your rules & options
});
});
答案 2 :(得分:0)
首先,确保您在加载的文件中引用了 Jquery.datetimepicker.js
。
也许你错过了参考。