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