jquery在回调函数后停止执行

标签 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。

最佳答案

基于gap的答案:

(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,因此如果没有被覆盖,它总是提交。

关于jquery在回调函数后停止执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5181783/

相关文章:

javascript - 范围的每 2 个分区循环 2

javascript - 如何以编程方式将 jQuery 插件 'intl-tel-input' 重置为默认占位符

jquery - tablesorter 对其中包含逗号的数字进行排序

使用中心插件将 jQuery 中心元素设置为视口(viewport)

javascript - 选中复选框时文本框值更改的jquery函数

javascript - setInterval() 对于非事件选项卡无法正常工作

javascript - 单击链接更改内容

单击另一个 li 时的 jQuery slideToggle li

javascript - 使用 javascript/jquery 触发文件上传对话框

javascript - 使用按钮将 .aspx 作为花式框弹出窗口关闭