2

我正在使用有效性插件来验证表单。它工作正常,但如果有效性函数成功,是否可以执行回调函数,如下所示

$("form").validity(function(){
    $("#place").require().range(3, 50);
    $("#location").require().greaterThan(4) 
}, function(){ /* Here to put the call back code */ });

因为如果表单验证成功,我想运行一些代码,任何想法将不胜感激

4

4 回答 4

0

根据文档,这不容易。

但是,您也许可以编写执行回调的自定义“输出模式”:http: //validity.thatscaptaintoyou.com/Demos/index.htm#CustomOutputMode

于 2011-09-26T09:12:42.160 回答
0

通常你可以做这样的事情:

var IsValid = function(){
 $.validity.start();
 $("#place").require().range(3, 50);
 $("#location").require().greaterThan(4) 
 var result = $.validity.end();
 return result;
}

if (IsValid()) { 
 //You callBack or whatewer
}

当然,使用这种模式,您可以实现更方便使用的 js 对象。

于 2011-09-26T09:37:02.563 回答
0

您可以使用 validate.start / validate.end 方法-> http://validity.thatscaptaintoyou.com/Demos/index.htm#UsingValidityWithAjax

它看起来像这样(未经测试!):

function validateMyAjaxInputs() {
    $.validity.start();
     $("#place").require().range(3, 50);
    $("#location").require().greaterThan(4) 
    var result = $.validity.end();
    return result.valid;
}

$("form").validity(function(){

    if (validateMyAjaxInputs()) {
        // Do ajax request here
    }
});
于 2011-09-26T09:24:30.803 回答
0

好的,有效性支持可插入的“输出模块”。

这是一个(公认的 hacky 和未经测试的)将调用您的回调函数。只需将代码附加到 jquery.validity.outputs.js 或将其放入您自己的文件中,然后在有效后加载。

(function($) {
    $.validity.outputs.callback = {
        start:function() {
            buffer = [];
        },

        end:function(results) {
            $.validity.settings.callback(results);
        },

        raise:function($obj, msg) {
            buffer.push(msg);
        },

        raiseAggregate:function($obj, msg) {
            this.raise($obj, msg);
        },

        container:function() {}
    };
})(jQuery);

用法:

$.validity.setup({
    outputMode:"callback",
    callback:function(){ /* your callback */ }
});

$("form").validity(function(){
    $("#place").require().range(3, 50);
    $("#location").require().greaterThan(4) 
});
于 2011-09-26T09:25:57.453 回答