2

私たちのサイトのバックエンド開発者には、フォーム処理用のdiv.errorsがあります。フォームの送信でエラーが発生しない限り、常に存在しますが空です。最初はdivを非表示にしてから、長さが表示されているかどうかを確認するのは簡単です。

if ($(".errors").text().trim().length) {
    $(this).css('display', 'block');
}

問題はこれです。ページの読み込み時にdiv.errorsが空で非表示になっています。フォームを送信すると、エラーが発生してdiv.errosの長さが長くなりますが、ページが更新され(再度読み込まれ)、イベントは再度発生しません。.liveは実行可能なオプションですか?

4

2 に答える 2

2

問題はthis、要素の参照を停止することです。

$(".errors").each(function () {
    if ($(this).text().trim().length) {
        $(this).css('display', 'block');
    }
});
于 2012-11-08T04:55:16.047 に答える
1

ライブはここではオプションではありません。ページに要素を動的に追加するときにライブが使用されます。ページの更新の間に div.errors の値を保持するには、ある種の状態管理手法が必要です。JQuery で簡単にアクセスできる Cookie を使用することをお勧めします。

于 2012-11-08T04:53:25.420 に答える