我正在使用Position Absolute's jQuery validationEngine,但我需要在将其附加到表单后将其删除。
我的表单上有2个提交按钮 - 一个用于保存,另一个用于保存为草稿。
单击“保存”时,我将validationEngine附加到表单。如果验证失败,并且用户单击“另存为草稿”(通过验证),则验证引擎仍然会在单击“保存”时附加到表单。
我想做的是:
我尝试了unbind功能,它似乎工作,但它完全打破了按钮上的提交。我只是想删除validationEngine并允许其他所有内容工作。
由于
答案 0 :(得分:2)
创建全局Validator变量
var globalValidator = null
执行验证器logoc ----
然后根据您的逻辑使用
重置function clearValidatorErrors(){
if(globalValidator != null){
globalValidator.resetForm();
}
}
答案 1 :(得分:2)
我在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。
答案 2 :(得分:1)
该库似乎没有任何支持在运行时解除绑定(如果你问我,这是非常糟糕的设计)。
以下是绑定'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')
将终止您绑定的所有事件。
假设事件是最后一个被绑定的事件,您可能只能剥离附加到提交的最后一个事件处理程序:
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