Javascript 无法理解此ajax请求触发两次的原因

Javascript 无法理解此ajax请求触发两次的原因,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在编写这段代码,但我不明白为什么在单击所选按钮时ajax请求会触发两次: $('#passwd-nuova').blur(function() { var response = $('#passwd-nuova').validate({ 'classeform': 'form-utenti', 'empty': 'passwd-nuova' }); if (!response.empty)

我正在编写这段代码,但我不明白为什么在单击所选按钮时ajax请求会触发两次:

   $('#passwd-nuova').blur(function() {
        var response = $('#passwd-nuova').validate({
            'classeform': 'form-utenti',
            'empty': 'passwd-nuova'
        });
        if (!response.empty) {
            $('#reset').addClass('btn-disabled');
        } else {
            $('#reset').removeClass('btn-disabled');
            /*
             * RESET PASSWORD PANNELLO
             */
            $('#reset').on('click', function() {
                    var new_passwd = $('input[name=passwd-nuova]').val();
                    var selezionato = $(this).loadID({
                        'nometabella': 'utenti',
                        'abbr': 'utenti'
                    });
                    var send_email = $('#cb-email').prop('checked');
                    $.ajax({
                        cache: false,
                        type: "POST",
                        url: "/gutenti/",
                        dataType: "json",
                        data: {
                            'mod-passwd': true,
                            'idu': selezionato,
                            'new-passwd': new_passwd,
                            'send-email': send_email
                        },
                        success: function(response) {
                            var tab = $("#datatable_utenti").dataTable();
                            $('#modal-reset').modal('hide');
                            tab.fnDraw();
                            $(window).scrollTop(0);
                            $(document).genAlert({
                                tipo: 'success',
                                msg: 'modifica completata con successo',
                                time: 800
                            });
                            $('input').each(function() {
                                $(this).val('');
                            });
                            $("#datatable_utenti tbody").compileForm({
                                'abbr': 'utenti',
                                'nometabellaDB': 'admin_utenti',
                                'nometabella': 'utenti'
                            });
                            $(document).stato(profile, 'base');
                            return;
                        },
                        error: function() {
                            console.log("errore async");
                            $('#modal-reset').modal('hide');
                            $(window).scrollTop(0);

                            $(document).genAlert({
                                tipo: 'error',
                                msg: 'qualcosa è andato storto, riprova',
                                time: 800
                            });
                        }
                    });
                    return;

            });
        }

    });

我尝试在调用后禁用按钮,也尝试不返回任何内容以退出该函数,但没有任何效果。

我在模糊函数中调用了该函数。然而单击重置按钮时也将调用该函数。我希望它能起作用

$('#passwd-nuova').blur(function() {
        var response = $('#passwd-nuova').validate({
            'classeform': 'form-utenti',
            'empty': 'passwd-nuova'
        });
        if (!response.empty) {
            $('#reset').addClass('btn-disabled');
        } else {
            $('#reset').removeClass('btn-disabled');
            /*
             * RESET PASSWORD PANNELLO
             */
            $('#reset').click();
        }

    });


     $('#reset').on('click', function() {
        var new_passwd = $('input[name=passwd-nuova]').val();
        var selezionato = $(this).loadID({
            'nometabella': 'utenti',
            'abbr': 'utenti'
        });
        var send_email = $('#cb-email').prop('checked');
        $.ajax({
            cache: false,
            type: "POST",
            url: "/gutenti/",
            dataType: "json",
            data: {
                'mod-passwd': true,
                'idu': selezionato,
                'new-passwd': new_passwd,
                'send-email': send_email
            },
            success: function(response) {
                var tab = $("#datatable_utenti").dataTable();
                $('#modal-reset').modal('hide');
                tab.fnDraw();
                $(window).scrollTop(0);
                $(document).genAlert({
                    tipo: 'success',
                    msg: 'modifica completata con successo',
                    time: 800
                });
                $('input').each(function() {
                    $(this).val('');
                });
                $("#datatable_utenti tbody").compileForm({
                    'abbr': 'utenti',
                    'nometabellaDB': 'admin_utenti',
                    'nometabella': 'utenti'
                });
                $(document).stato(profile, 'base');
                return;
            },
            error: function() {
                console.log("errore async");
                $('#modal-reset').modal('hide');
                $(window).scrollTop(0);

                $(document).genAlert({
                    tipo: 'error',
                    msg: 'qualcosa è andato storto, riprova',
                    time: 800
                });
            }
        });
        return;

    });

我已经调用了blur函数中的函数。然而单击重置按钮时也将调用该函数。我希望它能起作用

$('#passwd-nuova').blur(function() {
        var response = $('#passwd-nuova').validate({
            'classeform': 'form-utenti',
            'empty': 'passwd-nuova'
        });
        if (!response.empty) {
            $('#reset').addClass('btn-disabled');
        } else {
            $('#reset').removeClass('btn-disabled');
            /*
             * RESET PASSWORD PANNELLO
             */
            $('#reset').click();
        }

    });


     $('#reset').on('click', function() {
        var new_passwd = $('input[name=passwd-nuova]').val();
        var selezionato = $(this).loadID({
            'nometabella': 'utenti',
            'abbr': 'utenti'
        });
        var send_email = $('#cb-email').prop('checked');
        $.ajax({
            cache: false,
            type: "POST",
            url: "/gutenti/",
            dataType: "json",
            data: {
                'mod-passwd': true,
                'idu': selezionato,
                'new-passwd': new_passwd,
                'send-email': send_email
            },
            success: function(response) {
                var tab = $("#datatable_utenti").dataTable();
                $('#modal-reset').modal('hide');
                tab.fnDraw();
                $(window).scrollTop(0);
                $(document).genAlert({
                    tipo: 'success',
                    msg: 'modifica completata con successo',
                    time: 800
                });
                $('input').each(function() {
                    $(this).val('');
                });
                $("#datatable_utenti tbody").compileForm({
                    'abbr': 'utenti',
                    'nometabellaDB': 'admin_utenti',
                    'nometabella': 'utenti'
                });
                $(document).stato(profile, 'base');
                return;
            },
            error: function() {
                console.log("errore async");
                $('#modal-reset').modal('hide');
                $(window).scrollTop(0);

                $(document).genAlert({
                    tipo: 'error',
                    msg: 'qualcosa è andato storto, riprova',
                    time: 800
                });
            }
        });
        return;

    });

我猜这句话:

$('#reset').on('click', function() {
........
在每个模糊上运行一次以上

可以多次毫无问题地绑定事件

检查这是否解决了您的问题:

$('#reset').off('click').on('click',function(){ .....
如果确实如此,请尝试将事件附件移动到其他位置


我猜这句话:

$('#reset').on('click', function() {
........
在每个模糊上运行一次以上

可以多次毫无问题地绑定事件

检查这是否解决了您的问题:

$('#reset').off('click').on('click',function(){ .....
如果确实如此,请尝试将事件附件移动到其他位置


尝试取消绑定/绑定单击回调:

var callback = function () { ... }
$('#reset').unbind('click', callback);
$('#reset').bind('click', callback);

如果两次附加click事件,它将被调用两次。

尝试取消绑定/绑定click回调:

var callback = function () { ... }
$('#reset').unbind('click', callback);
$('#reset').bind('click', callback);
如果两次附加click事件,它将被调用两次。

您的$'passwd-nuova'。模糊处理程序绑定$'reset'。多次单击处理程序

我很高兴我的评论帮了你的忙

您的$'passwd-nuova'。模糊处理程序绑定$'reset'。多次单击“处理程序”


我很高兴我的评论帮了你的忙

我猜当你模糊passwd nuova字段时,reset按钮中的事件处理程序会被绑定多次。是的,你是对的,这是一个愚蠢的错误!我重构了代码,使模糊处理程序和点击处理程序分离,一切正常!如果你写下你的评论作为回答,我可以给你分数我很高兴能帮上忙。我已经按照你的要求发布了一个答案;顺便说一句,我也喜欢另一个答案。我猜当你模糊passwd nuova字段时,重置按钮中的事件处理程序会被绑定多次。是的,你是对的,这是一个愚蠢的错误!我重构了代码,使模糊处理程序和点击处理程序分离,一切正常!如果你写下你的评论作为回答,我可以给你分数我很高兴能帮上忙。我已经按照你的要求发布了一个答案;顺便说一句,我也喜欢另一个答案。