jquery在回调函数后停止执行

时间:2011-03-03 14:09:13

标签: jquery

我有一个简单的插件,用于提交表单

(function($){
    $.fn.ajaxSubmit = function(options){
        var defaults = {
            onSubmit:function(){},
        },
        o = $.extend({},defaults, options);

        return this.each(function(){
            $(this).submit(function(e){
                o.onSubmit.call(this);
                $.post(o.url,$(this).serialize() ,
                function(i){"do stuff"},'json');
                return false;
            });
        });
    }
})(jQuery);

这就是我称呼它的方式

$('#commentForm').ajaxSubmit({
    onSubmit:function(){
        if($('textarea').val()==''){ "do not execute $.post"}
    }
});

我想检查textarea是否为空,如果是,请不要继续进行插件或不执行$ .post。

2 个答案:

答案 0 :(得分:4)

以差距的答案为基础:

(function($){
$.fn.ajaxSubmit = function(options){
    var defaults = {
        shouldSubmit:function(){ return true; },
    },
    o = $.extend({},defaults, options);

    return this.each(function(){
        $(this).submit(function(e){
            if(o.shouldSubmit.call(this)) {
                $.post(o.url,$(this).serialize(), function(i){"do stuff"},'json');
            }
            return false;
        });
    });
}
})(jQuery);

$('#commentForm').ajaxSubmit({
    onSubmit:function(){
        if($('textarea').val()==''){ return false; }
    }
});

将函数名称更改为shouldSubmit,因为它更有意义,并将默认值设置为true,因此如果尚未覆盖它,则始终提交。

答案 1 :(得分:3)

我希望onSubmit处理程序返回一个bool,然后让插件测试返回值。