JavaScript-关于JS提交后禁用按钮的问题?

JavaScript-关于JS提交后禁用按钮的问题?

泛泛之交 发布于 2017-09-13 字数 825 浏览 1196 回复 5
<script type="text/javascript">
function startButton(){
var butt = document.getElementById('send');
butt.disabled=true;
document.getElementById("viewtime").setAttribute("defSec","5");
secondCounter(5,"endButton()","viewtime");
}
function endButton(){
var butt = document.getElementById('send');
butt.disabled=false;
}
function secondCounter(defSec, func, dispObj) {
document.getElementById(dispObj).innerHTML = defSec--;
if(defSec < 0){
eval(func);
}else{
setTimeout("secondCounter("+defSec+",""+func+"",""+dispObj+"")",1000);
}
}
</script>

<FORM action="" method='post'>
<span id="viewtime"></span>
<input type="button" id="send" value="发送提交" onclick="startButton()"/>

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

瑾兮 2017-10-30 5 楼

你可以考虑在服务器端做这个限制,用session或memcahce来控制。

浮生未歇 2017-10-18 4 楼

这个问题其实大家的想法都说了,我就当补充下,回答的具体点:

1 首先后台 验证是必须的,但是不用通过请求来验证,最好使用memcache。
2 前端用cookie来做效果的处理(对普通用户的简单限制),完全是没有问题的。

用户第一次提交后,将 用户的行为放入memcache,key定义唯一就行 比如:sumit_comment_+ $uid ,值随便,过期时间 < 1分钟;并及时的设置cookie, cookie值为 当前时间,过期 60秒,(如果是XHR请求,在回调函数中设置cookie效果更好)

当再次加载这个表单提交页面,获取cookie,如果获取不到,那么无需任何处理,获取到了,通过当前时间 减去 cookie获取到的时间 算出 还有N秒,接着写个timer,1 秒执行一次,并 将N-1,直到 N = 0 清除timer,效果上再加以处理;

每次提交需要先获取 memcache 的值,判断是否存在,存在那么 视为非法提交,(可能用户手动清除cookie之类,或是用程序提交没有发送cookie之类),如果不存在 继续你原有的逻辑。。。

虐人心 2017-10-08 3 楼

一种方法是:设置cookie,来限制提交。这样只要用户不清cookie就ok

二种:看你提交后的逻辑,触发提交按钮后ajax调用php,用php来与记录上次提交时间对比,然后判断是否限制提交。

晚风撩人 2017-10-06 2 楼

如果是针对单个问题,服务端memcache来记录上次回答的问题id,设置60秒过期,根据时间生成页面按钮的状态。

如果是针对人,那记录用户ID过期时间60秒就行了哈

偏爱自由 2017-09-14 1 楼

这个前端就可以处理了,
把唯一标识设为cookie的键名,值设为触发时的时间戳
不用在乎浏览器的是否关闭或者刷新
只要把倒计时的值设置为每次打开页面的计入cookie的时间和当前时间的差值进行倒计时的标值
然后通过判断去处理是否继续禁用