<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>
分开会写 放在一起就不会写了
$(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); } }); }); });
setTimeout("fun()", 30000);这个函数可以控制30秒后执行fun函数,不知能否满足你的要求
换个思路,30秒后+上onclick事件如何?
是执行ajax事件成功后 30秒后才能重新调用
$("#sendToTel").prop('disabled',true); setTimeout(function () {$("#sendToTel").prop('disabled',false);}, 30000);
其实你这个除了在客户端控制,还要再服务器端再进行验证。要不然效果不大
如果就只在客户端的话,客户只要再刷新一下页面那么又可以再次发送了,发送时间要跟服务器同步才好
所以啊,这个在服务器端控制才是王道