15

私は次のものを持っています:

<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 を使用しています。

4

5 に答える 5

24

IE7で動作することが報告されているため、互換モードのIE10のバグのようです。しかし、いくつかの jquery 回避策がここに投稿されています: http://bugs.jquery.com/ticket/12577

于 2012-12-09T00:20:30.293 に答える
6

問題を引き起こしていることがわかったのは、jquery.validate.js の 35 行目です。

this.attr('novalidate', 'novalidate');

この行をコメントアウトすると、問題が解決します。また、( current browser <= 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');
    }
于 2013-03-11T08:16:01.120 に答える
2

jQuery検証からこんにちは問題

https://github.com/jzaefferer/jquery-validation/issues/845

jquery Validation プラグインの 33 行目を次のように変更します。

this.attr( "novalidate", "novalidate" );

this.prop( "novalidate", "novalidate" );
于 2014-02-28T05:28:05.030 に答える
1

私の同様の問題

SCRIPT3: Member not foundX-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のケース(または同様の問題)の解決策

互換性要件によっては、私が使用したのと同じソリューションが使用される場合があります。

于 2013-11-26T18:36:14.560 に答える
1

Xaris からの回答にコメントを追加するつもりでしたが、完全な回答で少し余分な情報を提供したかったのです。jQuery.validate.js の行を次のように変更しました。

if (!$.browser.msie || $.browser.version > 7) {
    this.attr("novalidate", "novalidate");
}

ただし、$.browser はバージョン 1.9 で jQuery から削除されたため、jQuery Migrate プラグイン (これは公式の jQuery プラグインです) を追加する必要がありました。

.NET で nuget パッケージを使用していて、バンドル機能を使用している場合は、jQuery.validate.js を手動で更新できますが、jQuery.validate.min.js にはまだ問題があることに注意してください。バンドルが本番環境でそれを拾わないように、縮小版を削除する必要がありました。パッケージが更新されると私の変更が上書きされるため、nuget が提供するファイルを編集するのは悪い習慣ですが、これは現時点でこの問題に対する最善の修正です。

于 2013-04-24T20:45:16.323 に答える