jQuery Validation Plugin:无法获取属性' setdefaults'未定义或空引用IE

时间:2015-01-22 22:52:02

标签: javascript jquery internet-explorer jquery-validate

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

});

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

由于

3 个答案:

答案 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。 也许你错过了参考。