0

私のシナリオはこれです:

Contact Form 7 (contactform7.com) を使用しています。ユーザーが必要なフィールドを設定せずに送信を押した場合 (フォームは jQuery で送信されるため、ページのリロードは開始されません)、Contact Form 7 スクリプトは、ユーザーが見逃した入力フィールドに「エラー クラス」を出力します。記入します。

Contact Form 7 が設定したこのクラスを取得します。しかし、これでは hasClass() が機能しないようです。事前定義されたクラスでのみ機能します。

私の結論は、 hasClass() が取得しようとするクラスは、ページ全体がリロードされていないときに何らかの方法で利用できないということです。

どうすればこれを解決でき、クラスを取得できますか?

編集:私はこのコードを持っています

$('input:text, textarea').click(function() {
        $(this).css({'background' : '#fff'});
    });

必要な入力/テキストエリアに記入し忘れて「送信」を押すと、フィールドの背景が赤くなります (これは正しいです)。上記のコードは、クリックすると白くなります(これは正しいです)。しかし、必要な入力/テキストエリアを 2 回目に入力するのを忘れて「送信」を押すと、何かを書き忘れたフィールドが赤ではなく白 (背景) で表示されます (これは間違っています)。

私の考えでは、上記のコードは他の CSS クラスをオーバーライドします。どうすればこれを回避できますか?

4

2 に答える 2

0

お問い合わせフォーム7を使用しているとおっしゃっていましたが(ワードプレスでお願いします)、contactform7のJavaScriptを直接編集できます。したがって、hasClass()を機能させるには、たとえば[送信]ボタンのクリックなどのイベントにバインドして、そのファイルに書き込む必要があります。

エラースタイリングの場合、新しいインラインスタイルを追加しないでください。次回フォームが検証されるときに、適用されたエラークラスが削除され(検証エラーがない場合)、エラークラスが追加されます(検証エラーがあった場合)が、スタイルは追加されます。そこに保持され、適用されたクラスをオーバーライドします。したがって、textareaまたはテキストボックスをクリックして新しいスタイルを追加する代わりに、適用されているエラークラスを削除します

例えば:-

$('input:text, textarea').click(function() {
        $(this).removeClass('your error class');
    });
于 2012-07-20T09:24:02.440 に答える
0

コメントで説明したように、エラーが発生した場合は入力フィールドのクラスが追加されると言っていました。したがって、通常の別のクラスを作成します。

$('input:text, textarea').click(function() {
    $(this).removeClass('yourErrorClass').addClass('yourNormalClass');
});

.yourNormalClass{
    background : #fff
}

編集:エラーを与えるときは、クラスを変更し、それを通常(背景:#fff)にするために、要素のスタイルを変更しています。要素のインライン スタイルは、常にクラスよりも優先されます。そのため、要素のスタイルとして (background:#fff) が優先されるため、2 回目は白になります。

于 2012-07-20T09:18:28.623 に答える