从表单中删除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