从表单中删除JQuery validationEngine

时间:2010-02-17 22:41:10

标签: jquery validation

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

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

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

我想做的是:

  • 允许用户尝试保存
  • 验证失败并显示错误
  • 并允许他们点击另存为草稿而不执行任何验证

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

由于

3 个答案:

答案 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