jQuery 验证插件:无法获取 属性 'setdefaults' 未定义或空引用 IE

jQuery Validation Plugin: Unable to get property 'setdefaults' of undefined or null reference IE

我有一个带有输入字段的基本表单,该表单使用来自 jQuery 验证插件 (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();

});

有没有人能看看我的语法是否有问题或指出正确的方向?

谢谢

默认情况下,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 一起使用。

Is anyone able to see if there's something wrong with my syntax

这里的另一个问题是您在同一表单上两次调用 .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() 方法,插件会忽略 .ready() 处理程序中的 .validate() 方法。

您可以简单地将所有内容放入 DOM 就绪处理程序中...

jQuery().ready(function () {

    jQuery.validator.setDefaults({
        debug: false
    });

    jQuery("#myForm").validate({ // FIRST & ONLY CALL
        // your rules & options
    });

});

首先,确保您在加载的文件中引用了 Jquery.datetimepicker.js。 也许你错过了参考。