2

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

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

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

我的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");

                    }
                }
        });
4

2 回答 2

1

不是一个干净的方式,但这有效

/**
 * 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;
}
于 2015-07-29T09:01:46.190 回答
0

https://github.com/bcardarella/client_side_validations/issues/328

来自客户端验证 gem 的开发者 Brian Cardarella:

不幸的是,现在没有一种干净的方法可以做到这一点。这将在 4.0 中改变

于 2012-11-04T20:55:07.220 回答