jQuery Validation插件,IE7“SCRIPT3:找不到成员”
我有以下内容:
$(function(){ jQuery.validator.addMethod("notEqual", function(value, element, param) { return this.optional(element) || value !== param; }, "Please select an option"); $('form').validate({ rules:{ 'reporting_year': { notEqual: "-1" } } }); });
每个人最喜欢的浏览器,IE7(IE10 w /兼容性)在控制台中报告以下错误:
SCRIPT3:找不到会员。
jquery.js,第2525行,第4行
当然IE8及以上版本工作正常,但我的客户端正在使用IE7。
看起来这是IE10在兼容模式下的一个错误,因为据报道它可以在IE7中运行。 但是这里有一些jquery解决方法: http : //bugs.jquery.com/ticket/12577
我发现导致问题的是jquery.validate.js的第35行
this.attr('novalidate', 'novalidate');
注释掉这一行并解决了问题。 您也可以使用(当前浏览器<= ie7)来包装它,以便仅当ie7是broswer时才明确地避免使用此行。
更新要仅为ie7注释掉行,您可以使用以下代码:
var ie = (function () { var undef, v = 3, div = document.createElement('div'), all = div.getElementsByTagName('i'); while ( div.innerHTML = '', all[0] ); return v > 4 ? v : undef; } ());
然后:
if (!ie || ie > 7) { this.attr('novalidate', 'novalidate'); }
来自jQueryvalidation的问题
https://github.com/jzaefferer/jquery-validation/issues/845
更改jquery Validation插件的第33行:
this.attr( "novalidate", "novalidate" );
至
this.prop( "novalidate", "novalidate" );
我打算在Xaris的答案中添加一条评论,但是想在一个完整的答案中提供一些额外的信息。 我将jQuery.validate.js中的行更改为:
if (!$.browser.msie || $.browser.version > 7) { this.attr("novalidate", "novalidate"); }
但是,$ .browser在1.9版本中从jQuery中删除了,所以我不得不添加jQuery Migrate插件(这是一个官方的jQuery插件)。
如果您在.NET中使用nuget包并使用捆绑function,请记住您可以手动更新jQuery.validate.js,但问题仍然存在于jQuery.validate.min.js中。 我不得不删除缩小版本,以便捆绑不会在生产中取出它。 编辑nuget提供的文件是不好的做法,因为我的更改将在更新软件包时被覆盖,但这是此问题的最佳解决方案。
我的类似问题
我有相同的SCRIPT3: Member not found
由于定义的X-UA兼容,IE11中的SCRIPT3: Member not found
问题:
我的解决方案
就我而言,在这些日子里,应用程序的要求是IE8 +。
因此,要解决此问题,只需删除元标记或将其更改为:
OP案件(或任何类似问题)的解决方案
根据兼容性要求,它可能与我使用的解决方案相同。