2012-05-03 16 views
0

申し訳ありませんので、jQuery ajax()コールを使用して、フォームを送信/チェックするためにPHPページからの応答を取得しています。それが成功すると、フォーム要素のリストと、それらに何が間違っているかを示す対応するメッセージ(たとえば、フィールドの欠落、無効な入力など)が返されます。Ajaxの新機能... ajaxコールの後でCSSをデフォルト値に戻すにはどうすればよいですか? (CSSのリロードなど)

次にjQueryを使用して、ajax呼び出しから返された各フォーム要素をループし、css(インポート済み)を変更します。その要素とのエラーを示すために要素の境界を赤にします。

これはかなりうまくいきます。しかし、フィールドが足りないフォームを送信すると、Ajaxが呼び出しを行い、ページのcssが変更されて、そのフィールドが赤で強調表示されます。さて、私はそのフィールドで問題を解決して(例えば、有効なデータを与える)、再送信しますが、今回は別のフィールドがないことを考えてみましょう。新しい欠落フィールドには赤い枠線が正しく表示されますが、再送が正しく行われたフィールドからは赤い枠線が削除されません。言い換えれば、赤い国境がそこにあると決してクリアすることはできません。

私は、JavaScriptの "reload css"型関数を実行して、ajax呼び出し後にCSSをリロードする必要があると考えていますか?私は本当に知らない。しかし、これは本当によくやりたいことであるはずです。周りを読んで、それはページをキャッシュすることと関係があるかもしれないように見えましたが、私はそのようなことを私が支配しているとは思いません。

私はLess CSSを使用しています。ハルツ?

答えて

0

境界線やスタイルがコールバックにどのように追加されているのか分かりませんが、そのクラスで宣言されているスタイルで欠落しているフォームフィールドにCSSクラスを追加することをおすすめします。その後、 'if'ステートメントまたは:focusイベントを使用して、ユーザーがクリックしたときにクラスを削除します。

0

あなたはこれを熟考していると思います。 jQueryを使用してCSSを直接​​変更する必要はありません。クラスをオンとオフに切り替えるだけです。

これはあなたのフィールドであれば:あなたは

$theInput.removeClass("error") 
オフエラー状態を切り替える必要がある場合は、次に

<input type="text" class="error" /> 

<input type="text" /> 

とエラーがあります、サーバーはこれを返してきました

あなたはCSSを直接​​触れることはありません。それを「リロード」する必要はありません。彼の問題)。

+0

これは確かに私がやっていたものよりもエレガントですが、私はまだ同じ問題に遭遇しています...私は有効なフィールドを追跡していません。私はそれぞれのajax呼び出しの後に$( "form *")removeClass( "error")を(フォームを元の状態に戻すために)行うことができると思いますが、少し抽象的なものがあると思いましたこれはおそらく共通することです。 – user891876

+0

もっと明確にする必要があります。実際の検証はどこで行っていますか?それはクライアント側かサーバー側ですか?サーバー側の場合は、ERRORクラスにアタッチしてください。その後、リセットするには、あなたが持っているものを正確に行います。クラスをすべて削除してください。 –

+0

エラークラスを削除するときは '$(" form * ")の代わりに' $( "form .error") 'や' $( "form input") 'の代わりにDAに同意します。もう少し効率的です –

関連する問題