0

抱歉,我之前没有任何浏览器工作经验,但是我们将 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 后失败。我不明白为什么。有谁知道或遇到类似的问题?

4

2 回答 2

0

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

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

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

于 2013-05-24T09:42:44.183 回答
0

jquery validate 插件的当前版本是 1.11.1 这支持jquery 1.6.4, 1.7.2, 1.8.3, 1.9.0如果您使用的是旧版本的验证器插件,您可以更新它

于 2013-05-24T09:49:07.283 回答