0

了解しました。フォームを送信/確認するために、jQuery ajax()呼び出しを使用してphpページから応答を取得しています。成功すると、フォーム要素のリストと、それらの何が問題になっているのか(たとえば、フィールドがない、入力が無効であるなど)を示す対応するメッセージが返されます。

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

これはかなりうまくいきます。しかし、フィールドが欠落しているフォームを送信するとします。ajaxが呼び出しを行い、ページのcssが変更されて、そのフィールドが赤で強調表示されます。ここで、そのフィールドの問題を修正して(たとえば、有効なデータを指定して)再送信するとしますが、今回は別のフィールドがありません。新しい欠落しているフィールドに赤い境界線が適切に与えられますが、再送信時に正しくあったフィールドから赤い境界線が削除されることはありません。言い換えれば、一度そこにある赤い境界線をクリアすることはできません。

ajax呼び出しの後にcssをリロードするには、javascriptで「resloadcss」タイプの関数を実行する必要があるかもしれないと思っています...または何か?よくわかりません。しかし、これは本当に一般的なことのようです。読んでみると、ページのキャッシュと関係があるように見えましたが、私はそのようなことを制御できないと思います。

私がLessCSSを使用していることは言及する価値があるかもしれません。ハルプ?

4

2 に答える 2

0

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

したがって、これがあなたの分野である場合:

<input type="text" />

そして、エラーがあります。サーバーにこれを返してもらいます。

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

次に、エラー状態をオフに切り替える必要がある場合

$theInput.removeClass("error")

そうすれば、CSSに直接触れる必要がなく、CSSを「再ロード」する必要がありません(それで問題が解決するわけではありません)。

于 2012-05-03T18:44:31.740 に答える
0

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

于 2012-05-03T18:40:41.050 に答える