请教大佬关于 多次点击按钮 重复掉服务的 问题
javascript吧
全部回复
仅看楼主
level 1
一听🐭 楼主
问题描述:
点击一次按钮,掉一个js方法,方法里的功能是:
1、该按钮置灰不可点:$(".jPrintView").attr("disabled", true);
2、掉后台的接口 creatOrder();
3、2s后该按钮恢复可点击的状态:
setTimeout(function(){
$(".jPrintView").attr("disabled",false);
}, 2000);
--------------
但是,看后台的日志 接口creatOrder被调用了2次,数据库创建了两条一摸一样的数据,相同id、相同的操作时间、相同的操作工号、相同的操作ip(表没设置主键);
这表明 用户可以多次点击了该按钮,但是明明第一次点击就置灰不可点必须等2s后啊?
这是为啥啊?
2020年09月02日 02点09分 1
level 13
根据我的测试,如果按钮确实被禁用的话,不可能会出现重复触发事件的问题,所以你应该从以下几方面查找原因:
1.你使用了 jq 库,我不确定你 $(".jPrintView").attr("disabled", true) 这一条是否确实定位到了那个按钮,但是要在按钮的点击事件里对按钮本身进行更改应该用 this 指向这个按钮:
this.disabled=true ,何况如此简单的操作居然还需要依赖 jq 库,说明你的原生 js 水平不佳。相应的,解除禁用就是:setTimeout(()=>this.disabled=false,2000)。
2.如果不是按钮没被禁用的问题,那么应该从事件函数上找问题:
(1)是不是重复执行了 creatOrder 函数?
(2)也许是上次调用接口时的用到的数据没有被清除,所以才会每次调用数据都是一样的?
3.如果在网页的脚本上找不到问题,那就只能考虑是不是服务器的问题了,也许被调用的那个接口本来就是会写两次数据的?
4.如果都没有问题,那可能是你用来测试的浏览器有问题,建议换个别的浏览器试试。
5.如果浏览器也没有问题,那可能是你用来测试的设备的脑子有问题,建议换个脑子正常的设备试试。
6.如果都没有问题,那就是我有问题。
7.如果我也没有问题,那就是有外星人在搞鬼。
8.什么?你说没有外星人?那我也不知道了,因为我只是一个沙雕。
2020年09月02日 08点09分 5
1