私は次のものを持っています:
<html>
<head>
</head>
<body>
<div>
<form method="post">
<div id="questions">
<label for="question-6">Name of Course:</label>
<input type="text" name="name_of_course[response]" value="" id="question-6" class="required">
<label class="control-label" for="reporting-year">Reporting Year: </label>
<select name="reporting_year" id="reporting-year">
<option value="-1" selected="selected">Select option...</option>
<option value="4">2013-2014</option>
<option value="1">2012-2013</option>
<option value="2">2011-2012</option>
<option value="3">2010-2011</option>
</select>
</div>
<input type="submit" name="submit" value="Save Entry" class="btn">
</form>
</div>
<script src="//code.jquery.com/jquery.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script>
<script>
$(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"
}
}
});
});
</script>
</body>
</html>
みんなのお気に入りのブラウザであるIE7(実際には互換性のあるIE10)は、コンソールで次のエラーを報告しています。
SCRIPT3:メンバーが見つかりません。
jquery.js、2525行目文字4
もちろん、IE8以降は問題なく動作しますが、私のクライアントはIE7を使用しています。
IE7で動作することが報告されているため、互換モードのIE10のバグのようです。ただし、ここに投稿されているjqueryの回避策がいくつかあります: http://bugs.jquery.com/ticket/12577
問題の原因であることがわかったのは、jquery.validate.jsの35行目です。
this.attr('novalidate', 'novalidate');
この行をコメントアウトすると、問題が解決します。 (現在のブラウザー<= ie7)でラップして、ie7がブラウザーである場合にのみこの行を明示的に回避することもできます。
更新 ie7の行のみをコメント化するには、次のコードを使用できます。
var ie = (function () {
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef;
} ());
その後:
if (!ie || ie > 7) {
this.attr('novalidate', 'novalidate');
}
JQuery検証からのこんにちは問題
https://github.com/jzaefferer/jquery-validation/issues/845
Jquery検証プラグインの33行目を次のように変更します。
this.attr( "novalidate", "novalidate" );
に
this.prop( "novalidate", "novalidate" );
Xarisからの回答にコメントを追加するつもりでしたが、完全な回答で少し追加情報を提供したいと思いました。 jQuery.validate.jsの行を次のように変更しました。
if (!$.browser.msie || $.browser.version > 7) {
this.attr("novalidate", "novalidate");
}
ただし、バージョン1.9で$ .browserがjQueryから削除されたため、jQuery Migrateプラグイン(これは公式のjQueryプラグインです)を追加する必要がありました。
.NETでnugetパッケージを使用していて、バンドル機能を使用している場合は、jQuery.validate.jsを手動で更新できますが、問題はjQuery.validate.min.jsに引き続き存在することに注意してください。バンドルが本番環境でそれを取得しないように、縮小バージョンを削除する必要がありました。パッケージが更新されると変更が上書きされるため、nugetが提供するファイルを編集することはお勧めできませんが、これが現時点でのこの問題の最善の修正です。
私の同様の問題
私は同じSCRIPT3: Member not found
定義されたX-UA-CompatibleによるIE11の問題:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
私の解決策
私の場合、最近のアプリケーション要件はIE8 +です。
したがって、問題を修正するには、メタタグを削除するか、次のように変更します。
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
OPのケース(または同様の問題)の解決策
互換性の要件によっては、私が使用したのと同じソリューションを使用する場合があります。