ホームページ > 記事 > ウェブフロントエンド > jqueryはie8_jqueryの下でバグ解決策を検証します
このプロジェクトでは、jquery のフォーム検証プラグイン validate を使用しています。以前は、非常に単純な検証のみを実行していましたが、最近では、プロジェクトのアプリケーションの要件が 1 つのページに 2 つ増えています。フォーム検証は、次のようにボタンのクリック イベントにバインドされます。
その場合、プラグインの valid() 関数を使用するのが自然です:
これは確かに望ましい効果を達成できますが、ie8 では問題があります。 , valid()メソッドは常にfalseを返し、すべてのフィールドが必須フィールドとして検証されます。jqueryプラグインのコードが非常に複雑なので、最初は非常に読みにくく、後で確認しました。問題は、attributeRules() 関数から来ています:
この関数の機能は、スクリプト内ではなくページ上に検証ルールを記述する場合です。検証フレームワークを適用することもできます。技術的には非常に合理的で、必要な処理も合理的ですが、ie8 に関しては少し問題があります。 IE8 は次のブランチを実行します:
したがって、すべてのフィールドが必須フィールドとして検証されます。テスト後、問題を解決するための最終的な方法は 2 つあります。
1 つ目は、rules() メソッドで次のコードを見つけて、attributeRules() の呼び出しをコメント化することです。通常、検証がページに書き込まれることはめったにありません。もちろん、これが最善の解決策ではないため、2 番目の解決策を見てみましょう。
2 番目の解決策には 2 つのことが必要です。 まず、attributeRules() メソッドにいくつかの変更を加え、getAttribute() メソッドを attr() メソッドに置き換える必要があります。 getAttribute() は js メソッド、attr() は jquery メソッドであることに注意してください。実際、この変更後、ie8 でのバグは解決されましたが、この問題は ie7 で再び発生しました。最新の jquery を使用する必要があります。私がテストしたときは、jquery 1.10.2 バージョンを使用しました。
ああ、ちなみに、最後にフォームのデフォルト イベントをブロックすることを忘れないでください。