从表单中删除JQuery validationEngine

我正在使用Position Absolute的jQuery validationEngine但我需要在将它附加到表单后将其删除。

我的表单上有2个提交按钮 – 一个用于保存,另一个用于保存为草稿。

单击“保存”时,我将validationEngine附加到表单。 如果validation失败,并且用户单击“另存为草稿”(通过validation),则validation引擎仍然会在单击“保存”时附加到表单。

我想做的是:

  • 允许用户尝试保存
  • validation失败并显示错误
  • 并允许他们单击“保存为草稿”而不执行任何validation

我尝试了unbind函数,它似乎工作,但它完全打破了按钮上的提交。 我只想删除validationEngine并允许其他所有内容工作。

谢谢

我在validationEngine javascript文件的底部添加了一个函数:

disable : function(formobj) { $(formobj).unbind("submit"); $(formobj).die("submit"); $(formobj).bind("submit", function() { return true; }); $(formobj).live("submit", function() { return true; }); } 

您传入jQuery表单元素。 当然,您可以在validationEngine javascript文件之外执行此操作,我发现更容易将所有内容整合在一起:-)

重要的是你使用unbind和die。

创建全局Validator变量

var globalValidator = null

执行validation器logoc —-

然后根据您的逻辑使用重置

 function clearValidatorErrors(){ if(globalValidator != null){ globalValidator.resetForm(); } } 

该库似乎没有任何支持在运行时解除绑定(如果你问我这是非常糟糕的设计)。

这是绑定’submit’的代码。

 $(this).bind("submit", function(caller){ // ON FORM SUBMIT, CONTROL AJAX FUNCTION IF SPECIFIED ON DOCUMENT READY $.validationEngine.onSubmitValid = true; $.validationEngine.settings = settings; if($.validationEngine.submitValidation(this,settings) == false){ if($.validationEngine.submitForm(this,settings) == true) {return false;} }else{ settings.failure && settings.failure(); return false; } }) 

问题是,如果你有多个提交事件处理程序附加到该表单, .unbind('submit').unbind('submit')你绑定的所有事件。

假设事件是最后一个被绑定的事件,您可能只能剥离附加到提交的最后一个事件处理程序:

  var events = $("#myForm").data('events'); alert(events.submit.length); // should tell you how many events are bound.. events.submit.splice(events.submit.length - 1, 1); // strip the last event