1

ユーザーが情報を入力するとクライアント側の検証を表示するフォームと、一定期間後にエラー メッセージを取り除く jQuery スクリプトがあります。

ただし、スクリプトはページの読み込みごとに 1 回しか機能しません。私はjQueryについてあまり知らないので、すべての検証メッセージでどのように動作させるのか疑問に思っていますか?

現在、最初のエラー メッセージに対してのみ正常に動作します。

これは、私の rails .js ファイルのコードそのままです。

window.setTimeout(function() {
   $(".field_with_errors label").fadeTo(300, 0).slideUp(300, function(){
    $(this).remove(); 
  });
}, 4000);

- - アップデート

明確にするために、このページのフォームに無効なデータが入力されるたびに新しい HTML を生成する Client Side Validations と呼ばれる Rails gem を使用しています。

4

1 に答える 1

1

エラーメッセージが表示されるたびに関数を明示的に呼び出す必要があるため、次のようにすることができます。

var cleanUpErrorMessages = function() {
    window.setTimeout(function() {
        $(".field_with_errors label").fadeTo(300, 0).slideUp(300, function(){
            $(this).remove(); 
        });
    }, 4000);
}

//...
//A new error appears, then:
cleanUpErrorMessages();

クライアント側の検証を使用している場合は、ドキュメントのコールバックを見てください。必要なものは次のとおりです。

window.ClientSideValidations.callbacks.element.fail = function(element, message, callback) {
  callback();
  if (element.data('valid') !== false) {
    cleanUpErrorMessages();
  }
}
于 2013-06-03T05:09:59.170 に答える