ホームページ  >  記事  >  ウェブフロントエンド  >  jqueryはie8_jqueryの下でバグ解決策を検証します

jqueryはie8_jqueryの下でバグ解決策を検証します

WBOY
WBOYオリジナル
2016-05-16 17:15:301078ブラウズ

このプロジェクトでは、jquery のフォーム検証プラグイン validate を使用しています。以前は、非常に単純な検証のみを実行していましたが、最近では、プロジェクトのアプリケーションの要件が 1 つのページに 2 つ増えています。フォーム検証は、次のようにボタンのクリック イベントにバインドされます。
jqueryはie8_jqueryの下でバグ解決策を検証します
その場合、プラグインの valid() 関数を使用するのが自然です:
jqueryはie8_jqueryの下でバグ解決策を検証します
これは確かに望ましい効果を達成できますが、ie8 では問題があります。 , valid()メソッドは常にfalseを返し、すべてのフィールドが必須フィールドとして検証されます。jqueryプラグインのコードが非常に複雑なので、最初は非常に読みにくく、後で確認しました。問題は、attributeRules() 関数から来ています:
jqueryはie8_jqueryの下でバグ解決策を検証します
この関数の機能は、スクリプト内ではなくページ上に検証ルールを記述する場合です。検証フレームワークを適用することもできます。技術的には非常に合理的で、必要な処理も合理的ですが、ie8 に関しては少し問題があります。 IE8 は次のブランチを実行します:
jqueryはie8_jqueryの下でバグ解決策を検証します
したがって、すべてのフィールドが必須フィールドとして検証されます。テスト後、問題を解決するための最終的な方法は 2 つあります。

1 つ目は、rules() メソッドで次のコードを見つけて、attributeRules() の呼び出しをコメント化することです。通常、検証がページに書き込まれることはめったにありません。もちろん、これが最善の解決策ではないため、2 番目の解決策を見てみましょう。
jqueryはie8_jqueryの下でバグ解決策を検証します
2 番目の解決策には 2 つのことが必要です。 まず、attributeRules() メソッドにいくつかの変更を加え、getAttribute() メソッドを attr() メソッドに置き換える必要があります。 getAttribute() は js メソッド、attr() は jquery メソッドであることに注意してください。実際、この変更後、ie8 でのバグは解決されましたが、この問題は ie7 で再び発生しました。最新の jquery を使用する必要があります。私がテストしたときは、jquery 1.10.2 バージョンを使用しました。
jqueryはie8_jqueryの下でバグ解決策を検証します
ああ、ちなみに、最後にフォームのデフォルト イベントをブロックすることを忘れないでください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。