1

我正在使用 validationEngine 脚本来验证表单。我初始化它:

$("#formid").validationEngine();

我并没有真正通过提交按钮提交表单。我将锚元素与onclick调用saveElement()函数的事件一起使用。在这个函数中,我调用:

$("#formid").validationEngine('validate');

效果很好。

""在那之后,我重置了所需的字段开始显示错误的字段(例如,输入字段的内容)。

为了防止发生这些错误,我想从表单元素中删除 validationEngine。但我就是无法删除它。我尝试了各种选项,包括以下选项,但都没有奏效。

$('#formid').validationEngine('hideAll'); // To hide the error messages
$('#formid').validationEngine('detach');  // To remove the validationEngine

有没有人建议我如何删除验证引擎?

解决方法

它真的像没有解绑方法一样接缝。我在 github 项目中添加了一个问题。也许他们会实现一个 unbind 方法: https ://github.com/posabsolute/jQuery-Validation-Engine/issues/287

作为一种解决方法,我想出了以下解决方案:您可以:

  • 使用 jQuery.clone() 复制没有事件的表单,删除原始表单并再次将validationEngine添加到表单
  • 删除表单元素上的验证类,将它们存储在一个数组中,并在重置表单后再次插入它们

还开着

也许有更好的解决方案或解决方法。如果你知道一个,请告诉我。

4

2 回答 2

2

这个问题还没有解决。我需要在现有应用程序中禁用验证,以允许在不验证表单的情况下发生回发事件。我通过使用如下正则表达式删除验证类成功地做到了这一点:

// Work around
$('[class*="validate"]').each(function () {
      var _this = $(this);
      _this.attr("class", _this.attr("class").replace(/validate\[.*]+\s?/, ""));
});
于 2014-08-25T15:34:28.920 回答
1

我认为你真的过度设计了一些东西。这可能不是您期望的答案,但这是我认为您应该做的:

首先,在要提交的锚元素上,执行以下操作:

$('#anchorElement').click(function() {
    $('#formid').submit()
})

然后,您可以这样做以在提交后删除表单:

$('#formid').submit(function() {
    // Do your submitting stuff, like validating.
    $(this).remove()
    // Or use $(this).hide() if you simply want to hide it.
})

但我不提倡使用锚元素的方法。几乎每个网站都必须很好地降级。

问题是,当您的用户没有启用 javascript 时,您的表单将永远不会被提交。

顺便说一句,看起来验证引擎没有“解除绑定”。请参阅此处获取解决方案:从表单中删除 JQuery 验证引擎

于 2012-02-23T08:30:00.567 回答