首页 新闻 会员 周边 捐助

Jquery 禁用 a 标签 onclick 事件30秒后可用

0
悬赏园豆:20 [已解决问题] 解决于 2014-09-11 10:39
<a href="javascript:;" id="sendToTel" >发送短信</a>

<script type="text/javascript">
        $(document).ready(function () {
            $("#sendToTel").click(function () {
                var mobile = $("#txtMobile").val();
                $.ajax({
                    type: "POST",
                    url: "/Ajax/SmsAddress.ashx",
                    data: "Mobile=" + mobile + "",
                    dataType: "text",
                    success: function (msg) {
                            $("#sendToTel").html("<i>发送成功</i>");
                            //在这里禁用30秒  然后才可以重新点
                    }
                });
            });

            var canSend;
            function updateTime(time) {
                var linkBtn = $("#sendToTel");
                linkBtn.html(time <= 0 ? "<i>发送短信</i>" : ("<i>" + time + "秒后可重新发送</i>"));
                var hander = setInterval(function () {
                    if (time <= 0) {
                        canSend = false;
                        clearInterval(hander);
                        linkBtn.html("<i>发送短信</i>");
                        linkBtn.removeAttr("disabled");
                    }
                    else {
                        canSend = true;
                        linkBtn.attr({ "disabled": "disabled" });
                        linkBtn.html("<i>" + time + "秒后可重新发送</i>");
                    }
                }, 1000);
            }
        });
    </script>

分开会写 放在一起就不会写了

暗尘掩月的主页 暗尘掩月 | 初学一级 | 园豆:183
提问于:2012-10-15 11:18
< >
分享
最佳答案
1
$(document).ready(function () {
    var canSend;
    $("#sendToTel").click(function () {
        if (!canSend) return;
        var btn = $(this);
        var mobile = $("#txtMobile").val();
        $.ajax({
            type: "POST",
            url: "/Ajax/SmsAddress.ashx",
            data: "Mobile=" + mobile + "",
            dataType: "text",
            success: function (msg) {
                $("#sendToTel").html("<i>发送成功</i>");
                var hander = setInterval(function () {
                    if (time <= 0) {
                        canSend = true;
                        clearInterval(hander);
                        btn.html("<i>发送短信</i>");
                        btn.removeAttr("disabled");
                    }
                    else {
                        canSend = false;
                        btn.attr({ "disabled": "disabled" });
                        btn.html("<i>" + time + "秒后可重新发送</i>");
                    }
                }, 1000);
            }
        });
    });
});
收获园豆:20
I,Robot | 大侠五级 |园豆:9783 | 2012-10-15 12:09
其他回答(5)
0

setTimeout("fun()", 30000);这个函数可以控制30秒后执行fun函数,不知能否满足你的要求

allon6318 | 园豆:858 (小虾三级) | 2012-10-15 11:25
0

换个思路,30秒后+上onclick事件如何?

朱样年华 | 园豆:200 (初学一级) | 2012-10-15 11:26

是执行ajax事件成功后 30秒后才能重新调用

支持(0) 反对(0) 暗尘掩月 | 园豆:183 (初学一级) | 2012-10-15 11:37
0
$("#sendToTel").prop('disabled',true);
setTimeout(function () {$("#sendToTel").prop('disabled',false);}, 30000);
田林九村 | 园豆:2367 (老鸟四级) | 2012-10-15 11:58
0

其实你这个除了在客户端控制,还要再服务器端再进行验证。要不然效果不大

chenping2008 | 园豆:9836 (大侠五级) | 2012-10-15 13:05
0

如果就只在客户端的话,客户只要再刷新一下页面那么又可以再次发送了,发送时间要跟服务器同步才好

hongdada | 园豆:216 (菜鸟二级) | 2012-10-15 15:11

所以啊,这个在服务器端控制才是王道

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-10-15 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册