我有一个订阅表单,它通过模态窗口工作,但当我关闭窗口并返回单击按钮订阅ajax调用是重复的,这是一个错误。
$("#openModal").click(function() {
if($("#wname").val() == '' || $("#lname").val() == '' || $("#wmail").val() == ''){
$('#message-error').html("Los campos no pueden estar vacios");
return;
}
$("#message").empty();
var regex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if (regex.test($('#wmail').val())) {
$('#myModal').modal('show');
$('#fin_coach_acept').click(function(event){
$('.whmessage').empty();
$('#message').empty();
datos['usu_nombre'] = $("#wname").val();
datos['usu_apellido'] = $("#lname").val();
datos['pa_id'] = 32;
datos['usu_fechanacimiento'] = '';
datos['sexo'] = $("#sexo_e").val();
datos['firma'] = '';
datos['mail'] = $("#wmail").val();
datos['intereses'] = '';
datos['rol_id'] = 2;
datos['pa_residencia'] = '';
datos['curso'] = $(".whcursos").val();
datos['contmin'] = $("#contmin").val();
datos['contper'] = $("#contper").val();
console.log(JSON.stringify(datos));
$.ajax({
type: "POST",
url: "<?php echo home_url(); ?>/wssetcoach.php",
data: {datosw: JSON.stringify(datos)},
success: function(res){
if(res == 'logrado'){
$("#message").append("<span style='color:#76292F;'>Usted ya se encuentra registrado como Facilitador con: "+ $("#wmail").val() + "</span>");
} else {
$('.whmessage').append("<p>¡Gracias por registrarte!. Desde ahora eres parte de ActiveMind. Se enviarán los datos de acceso al Sistema Académico a la cuenta de correo:</p><p>"+$("#wmail").val()+"</p><p>Cualquier consulta envía un correo electrónico a la dirección:</p><p>am@activemind.center</p>");
$('#final').modal('show');
$('#finalize').click(function(event){
$(location).attr('href', 'http://www.activemind.center/active/');
});
$('#myModal').modal('hide');
$('#final').modal('show');
$('#coach_cancel').click(function(event){
$('#facilitadorini').modal('hide');
$('#myModal').modal('show');
});
}
}
});
});
} else {
$('#message-error').html("El correo no es válido");
return;
}
});
显然,方式保存在内存中,已使用以下代码删除它但不起作用:$('#studentini')。remove();
任何想法解决方案对我都有用,谢谢
答案 0 :(得分:0)
查看使用jquery的off()
方法,以避免每次打开模式时再次添加点击处理程序。
var $openBtn = $("#openModal");
$openBtn.off().click(fn);
或使用事件委派来避免此问题:
var $document = $(document);
document.on('click', '#openModal', fn);