IE8中的knockout.validation.js错误,observable不支持';扩展';性质或方法

IE8中的knockout.validation.js错误,observable不支持';扩展';性质或方法,validation,knockout.js,internet-explorer-8,extend,observable,Validation,Knockout.js,Internet Explorer 8,Extend,Observable,我们的淘汰验证设置在FF、Chrome、IE 10和9上运行。在IE8中,我们得到一个错误: SCRIPT438:对象不支持属性或方法“extend” knockout.validation.js,第353行字符17 这是当knockout试图添加规则时,传递的可观察值是一个布尔值,而不是它应该是的函数。不确定为什么要传递布尔值。我们有很多这样的结构,例如: self.MiddleInitial=ko.observable().extend({maxLength:1}) 如果我们注释掉所有的敲除

我们的淘汰验证设置在FF、Chrome、IE 10和9上运行。在IE8中,我们得到一个错误:

SCRIPT438:对象不支持属性或方法“extend” knockout.validation.js,第353行字符17

这是当knockout试图添加规则时,传递的可观察值是一个布尔值,而不是它应该是的函数。不确定为什么要传递布尔值。我们有很多这样的结构,例如: self.MiddleInitial=ko.observable().extend({maxLength:1})

如果我们注释掉所有的敲除扩展,那么我们就没有错误

相关的html如下所示:

网站是ASP.Net/MVC。版本:knockout 2.2.1.debug、Modernizer-2.6.2、jquery 1.10.1、jquery-ui-1.10.3

提前谢谢


当knockout试图在一组复选框上添加“requires”规则时,似乎会发生错误。相关的observable没有为其指定任何验证。

可能您的observable绑定到了一个新的HTML5标记,这使得您的observable为空

或者一个类似的问题与你依赖html5的功能或者IE8中失败的特性有关


很明显,null或undefined不会让方法扩展。

谢谢,你说的有些道理。IE8拒绝在ko foreach模板中生成的复选框。它假设了一些东西,并试图对其应用html5所需的验证,然后就死了。当未指定任何验证时,是什么让它应用此html5验证是一个谜({registerExtenders:true,ErrorsTitle:true,ErrorsTitleOnModified:false,decorateElement:true,messagesOnModified:true,insertMessages:false,ParseInputAttribute:true,messageTemplate:null,errorElementClass:'requiredError'});在ko.validation.config中将ParseInputAttribute设置为false修复了错误。感谢您为我们指明了正确的方向!