jquery - 清除客户端验证 Rails gem 中的错误消息

标签 jquery ruby-on-rails client-side-validation

我在我的应用程序中使用客户端验证rails gem v3.1.0。我在 jquery 对话框中显示了一个需要验证的表单。该表单上启用了客户端状态验证。验证一切正常,但是当用户取消对话框(不提交)时,我想清除任何现有的验证错误。这样,当用户再次触发对话框时,表单上就不会出现验证错误。

我尝试通过在对话框关闭时触发每个元素的客户端状态验证传递事件来实现此目的 - 它通过删除包装错误字段和标签来实现。一个问题是,在此代码之后后续验证不起作用。我觉得绑定(bind)的事件被删除并且不再触发。

是否有更好的方法来实现这一目标?

我的 jquery 对话框:

$('#create_dialog').dialog({
            height: 260,
            width: 420,
            title: "title",
            buttons: {"<%= I18n.t("create") %>": function(e) {
                $('#new_segment').submit();
                },
                Cancel: function() {
                    var form = $('#new_segment');
                    form.find('[data-validate]:input').each(function() {
                        $(this).trigger('element:validate:pass');
                    });
                    $(this).dialog("close");

                    }
                }
        });

最佳答案

这不是一个干净的方法,但是可行

/**
 * Remove Embedded validation perfectly that is compatible with validation gem
 * @param field
 * @returns {boolean}
 */
function removeValidationMessage(field) {
  var $field = $(field) || field;
  /**
   * First wrap the previously occurring label in wrapper div with class 'field_with_errors'
   * Then Wrap the field within a wrapper div of same class
   * Then add validation message after the field with class name 'message'
   */
  if ($field.siblings('.message').length > 0) {
    $field.parent().prev('.field_with_errors').find('label').unwrap();
    $field.unwrap();
    $field.next('.message').remove();
    return true;
  }
  return false;
}

关于jquery - 清除客户端验证 Rails gem 中的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10466132/

相关文章:

javascript - 客户端 JavaScript 字段验证

用于真实 Web 项目的 Scala-JS

jQuery - 智能向导。如何覆盖 "Previous"按钮验证?

jquery - 根据父级高度设置 UL 最小高度

javascript - 动画鼠标轨迹

javascript - NPM 安装 jquery 出现错误?定义未定义?

ruby-on-rails - 如何处理 rails 中 graphql 突变的错误

Jquery mobile 永远不会重新加载请求的第一页

ruby-on-rails - Rails session 不保存

ruby-on-rails - 搜索查询中指定时区