在 JQuery 中单击后禁用按钮

Posted

技术标签:

【中文标题】在 JQuery 中单击后禁用按钮【英文标题】:Disable button after click in JQuery 【发布时间】:2014-06-29 03:49:24 【问题描述】:

我的按钮使用 AJAX 向数据库添加信息并更改按钮文本。但是,我希望在单击后禁用该按钮(否则该人可以向数据库中的信息发送垃圾邮件)。我该怎么做?

html

<button class="btn btn-lg btn-primary" id='roommate_but' onclick='load(<?php echo $user_id;?>)'><span class="glyphicon glyphicon-plus"></span> Add Person</button>

javascript/AJAX/JQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

function load(recieving_id)                                    
    if (window.XMLHttpRequest)
        xmlhttp = new XMLHttpRequest();
     else
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    

    xmlhttp.onreadystatechange = function() 
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)  
            document.getElementById("roommate_but").innerHTML =  xmlhttp.responseText;


        

    

xmlhttp.open('GET','include.inc.php?i=' + recieving_id, true);

xmlhttp.send();



【问题讨论】:

你真的在页面上包含了 jQuery 吗?我问是因为 - 尽管你用jQuery 标记了这个问题 - 你的代码中没有使用 jQuery。因此,根据您是否可以使用 jQuery,答案可能会有很大差异。 是的,我正在使用 JQuery。我编辑了我的原始帖子以显示 JQuery 的链接。有什么建议可以一键禁用按钮吗? 如果您已经在使用 jQuery,请不要使用纯 XHR。两者混合起来非常难看。 【参考方案1】:

*更新

jQuery 版本如下:

function load(recieving_id)
    $('#roommate_but').prop('disabled', true);
    $.get('include.inc.php?i=' + recieving_id, function(data) 
        $("#roommate_but").html(data);
    );

【讨论】:

当我在加载函数中添加它时,按钮仍然是可点击的,它停止了向数据库添加内容和更改按钮文本的功能。该代码的任何特定位置以确保它与其他功能的按钮一起使用? ajax成功后删除disabled,答案更新 我用您的加载函数替换了整个加载函数(因此将 AJAX 替换为 Jquery),单击后它仍然没有禁用按钮(仍然可单击)。但是,它仍然可以做与 AJAX 相同的事情,转到另一个页面,向 db 添加一些内容,并更改按钮文本。如果有帮助,我正在使用引导按钮。有什么我还能做的吗? 如果你想一键禁用按钮然后删除$('#roommate_but').prop('disabled', false);,回答更新 如果你让这个答案对问题的标题更通用,你会得到更多的赞许:“点击 JQuery 后禁用按钮”在谷歌中显示为最高结果。在他的答案中包含有关直接禁用的信息,例如/。【参考方案2】:

您可以在 jquery 中通过将属性 disabled 设置为 'disabled' 来做到这一点。

$(this).prop('disabled', true);

我做了一个简单的例子http://jsfiddle.net/4gnXL/2/

【讨论】:

您应该知道何时使用attr 以及何时使用prop。这应该使用prop 来完成。你可以阅读更多关于它的信息here。 是的,我认为亚当是对的。当我尝试这段代码时: $('roommate_but').click(function() $(this).attr('disabled','disabled'); ); ,该按钮仍未被禁用。所以我只需要将 attr 更改为 prop 对吗?我可以在任何特定的地方放置按钮以使其工作吗?如果有帮助,我实际上正在使用引导按钮 -1 用于使用 attr 即使.prop() 已经存在多年了。但是,两者都应该工作。 注意@PeterSmith 将会更新。 @user337712 $('roommate_but') 应该是 $('#roommate_but') 以及如何禁用按钮并保留其样式,因为 attr "disabled" 通常具有不透明 css 规则。【参考方案3】:

也可以考虑.attr()

$("#roommate_but").attr("disabled", true); 为我工作。

【讨论】:

以上是关于在 JQuery 中单击后禁用按钮的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时暂时禁用悬停(jQuery)

如何在按钮单击时启用和禁用 jquery dataTables 的分页

使用 Jquery 在第一次单击时禁用提交按钮

禁用单击 Jquery Toggle 按钮中的选定状态

如何通过单击按钮禁用 JQuery 功能,但默认保持打开状态?

单击后如何在 React Native 中禁用按钮