1

我有一个表单,可以在用户输入信息时显示客户端验证,还有一个 jQuery 脚本可以在一段时间后消除错误消息。

但是,该脚本在每次页面加载时仅工作一次。我对 jQuery 了解不多,所以我只是想知道如何让它在每条验证消息上工作?

它目前仅适用于第一条错误消息:

这是我的 rails .js 文件中的逐字代码:

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

- - 更新

需要明确一点:我正在使用一个名为 Client Side Validations 的 Rails gem,每次在此页面的表单中输入无效数据时,它都会生成新的 HTML。

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 回答