Javascript 无法理解此ajax请求触发两次的原因
我正在编写这段代码,但我不明白为什么在单击所选按钮时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)
$('#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字段时,重置按钮中的事件处理程序会被绑定多次。是的,你是对的,这是一个愚蠢的错误!我重构了代码,使模糊处理程序和点击处理程序分离,一切正常!如果你写下你的评论作为回答,我可以给你分数我很高兴能帮上忙。我已经按照你的要求发布了一个答案;顺便说一句,我也喜欢另一个答案。