升级JQuery后验证不起作用

时间:2013-05-24 09:31:18

标签: javascript jquery html unit-testing jquery-plugins

抱歉,之前我没有任何浏览器的工作经验,但在将JQuery 1.7.1升级到1.8.3后,我们遇到单元测试失败。我必须解决这个失败。我们有这样的html页面。

          <li class="my-form-item">
            <label for="my_data_add_description" data-localize="my_data.add.description">Description</label>
            <div class="my-form-content my-has-help">
              <span type="text" id="my_data_add_description" name="data_description"></span>
              <label for="my_data_add_description" class="my-optional">optional</label>
              <label for="my_data_add_description" class="my-help" data-localize="my_data.add.description_help">Description</label>
            </div>
          </li>

JavaScript就像

var DATA_DESCRIPTION = 'data_description';

function getRules(formId) {
    var rules = {};
    rules[DATA_DESCRIPTION] = {
        maxlength: DataModel.DESCRIPTION_MAXLENGTH
    };
}

function getMessages(formId) {
    var messages = {};
    messages[DATA_DESCRIPTION] = {
        maxlength: Localizer.getString('data description maxLength')
    };
}

this.initValidator = function (formId) {

    // Set validation defaults per the 'dialog' context
    self.setDialogValidatorDefaults();

    validator = $(formId).validate({
        rules: getRules(formId),
        messages: getMessages(formId)
    });
};

Finally, we count the invalid elements number

this.invalidElements = function(formId) {
     $(formId).submit();
     return validator.invalidElements();
};

在单元测试中。我们在my_data_add_description中设置了包含DESCRIPTION_MAXLENGTH + 1'a'的字符串。

$(#my_data_add_description).val('aaa...a') // set DESCRIPTION_MAXLENGTH+1 'a' to my_data_description. 
expect(formValidator.invalidElements(formId)).toEqual(1); // now we have a invalid element

此测试始终失败,且invalidElements始终返回0.此代码在我们使用JQuery 1.7.1时效果很好,但在将JQuery升级到1.8.3后失败。我不明白为什么。有没有人知道它或遇到类似的问题?

2 个答案:

答案 0 :(得分:0)

jQuery validate是jQuery的插件,因此可能会使用已弃用的方法和函数。为了解决这个问题,您还需要升级正在使用的validate插件。

我无法确定您使用的是哪个验证插件,但可能是以下内容,如果是,您可以更新它here

然而,在这样做之前,你为什么要升级jQuery?虽然最新版本可能具有最新功能和更好的方法,除非您正在编写需要最新版本的新代码,否则请不要升级,因为它会破坏您的代码!

答案 1 :(得分:0)

当前版本的jquery validate plugin是1.11.1。这支持 jquery 1.6.4,1.7.2,1.8.3,1.9.0 如果您使用的是旧版本的验证器插件你可以update it