Javascript 即使点击取消按钮(ajax),代码也会被执行
好的,我有一个函数“deactivate”,它向它传递3个参数Javascript 即使点击取消按钮(ajax),代码也会被执行,javascript,jquery,ajax,Javascript,Jquery,Ajax,好的,我有一个函数“deactivate”,它向它传递3个参数 <a href="#myModal" onclick="deactivate('{{ $user->getRoleName() }}', '{{ $user->getFullName() }}', {{ $user->id }}); return false;" role="button" data-toggle="modal" class="btn btn-danger btn-small delete"&
<a href="#myModal" onclick="deactivate('{{ $user->getRoleName() }}', '{{ $user->getFullName() }}', {{ $user->id }}); return false;" role="button" data-toggle="modal" class="btn btn-danger btn-small delete">
<i class="btn-icon-only"></i>
Deactivate User
</a>
以下是我的功能:
function deactivate(title, name, id) {
$('#modal-user-role').html(title);
$('#modal-user').html(name);
$('#confirm').click(function() {
$.ajax({
url: '/user/' + id + '/',
type: 'PUT',
success: function (data) {
$('#alerts').html('<p class="alert alert-success">Successfully deactivated ' + title + ': ' + name + '</p>' + $('#alerts').html());
$('#r' + id).hide();
},
error: function (jqXHR, textStatus, errorThrown) {
$('#alerts').html('<p class="alert alert-error">A problem occured while deactivating ' + title + ': ' + name + '</p>' + $('#alerts').html());
$('#r' + id).hide();
}
});
});
}
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close icon-remove" data-dismiss="modal" aria-hidden="true"></button>
<h3 id="myModalLabel">Deactivate User</h3>
</div>
<div class="modal-body">
<p>Are you sure you want to deactivate user <span id="modal-user-role"></span>: <span id="modal-user"></span>?</p>
<p>This action cannot be undone.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button id="confirm" data-dismiss="modal" class="btn btn-danger">Confirm Deactivation</button>
</div>
</div>
功能停用(标题、名称、id){
$(“#模式用户角色”).html(标题);
$('#modal user').html(名称);
$('#确认')。单击(函数(){
$.ajax({
url:'/user/'+id+'/',
键入:“PUT”,
成功:功能(数据){
$('#警报').html('已成功停用'+title+':'+name+'
'+$('#警报').html();
$('#r'+id).hide();
},
错误:函数(jqXHR、textStatus、errorshown){
$(“#警报”).html(“禁用“+title+”:“+name+”
”+$(“#警报”).html()时出现问题;
$('#r'+id).hide();
}
});
});
}
以下是我的HTML随函数一起提供:
function deactivate(title, name, id) {
$('#modal-user-role').html(title);
$('#modal-user').html(name);
$('#confirm').click(function() {
$.ajax({
url: '/user/' + id + '/',
type: 'PUT',
success: function (data) {
$('#alerts').html('<p class="alert alert-success">Successfully deactivated ' + title + ': ' + name + '</p>' + $('#alerts').html());
$('#r' + id).hide();
},
error: function (jqXHR, textStatus, errorThrown) {
$('#alerts').html('<p class="alert alert-error">A problem occured while deactivating ' + title + ': ' + name + '</p>' + $('#alerts').html());
$('#r' + id).hide();
}
});
});
}
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close icon-remove" data-dismiss="modal" aria-hidden="true"></button>
<h3 id="myModalLabel">Deactivate User</h3>
</div>
<div class="modal-body">
<p>Are you sure you want to deactivate user <span id="modal-user-role"></span>: <span id="modal-user"></span>?</p>
<p>This action cannot be undone.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
<button id="confirm" data-dismiss="modal" class="btn btn-danger">Confirm Deactivation</button>
</div>
</div>
停用用户
是否确实要停用用户:
此操作无法撤消
取消
确认停用
有人知道为什么我的取消按钮不起作用吗?我相信这与我正在使用的onclick有关,但不确定如何修复它
因此,基本上,如果我单击deactivate user(停用用户)按钮,然后单击cancel(取消),然后单击另一个用户,然后单击cancel(取消),然后单击另一个用户,然后确认停用,它将从数据库中删除每个用户。
这是我不想要的
我有一个button type=“button”,我认为它可以解决这个问题。但事实并非如此
如果您有任何想法,我们将不胜感激。正如我在评论中提到的,问题在于您如何注册单击处理程序 由于单击处理程序是在
deactivate
方法中注册的,因此每次调用该方法时,都会添加一个新的处理程序-它不会删除以前添加的处理程序
因此,您可以尝试使用
注意:当使用事件解除绑定时,我更喜欢使用您是否尝试过简单地为“取消”按钮提供一个ID?然后使用该ID做什么?只需给它一个ID即可?是的,只需给它一个
ID=“cancelButton”
或其他东西:)将此添加到“取消”按钮:取消不起作用。是否从“确认”中删除事件处理程序?因为事件处理程序是可添加的。每次调用deactivate()。事实上,那将是你的问题。在分配新的事件处理程序之前,请删除该事件处理程序。