• 避免按钮重复点击的小工具bimianchongfu.queren()


    按钮后台可能执行很长时间,这期间如果客户等不及再次点了按钮,可能会重复触发。

    比如资产折旧,运行很长时间。

    所以可以做一个hf_running的hiddenfield对象,设置值1表示正在运行,0表示没有。为兼容性用的纯js。

    封装好了:

    1. //避免重复运行,需要加一个hf_running的控件。用法:
    2. //if (!bimianchongfu.queren('确认继续吗?')) return;
    3. //执行具体业务代码
    4. //执行完后,清空hf_running的值或者改成0
    5. var bimianchongfu = {
    6. kongjian: { objRunning: "hf_running" },
    7. //检查是否正在运行,并提示,并设置值
    8. queren: function (AConfirmMsg, lShowAlert, strShowAlert, lMarkIsRunning) {
    9. var rt = this.zhengzaiyunxing(lShowAlert, strShowAlert, false);//检查正在运行
    10. if (rt) return false; //正在运行,返回
    11. //确认
    12. var s = AConfirmMsg;
    13. if (AConfirmMsg == undefined || AConfirmMsg == null) s = "";
    14. if (s != "") if (!(rt = confirm(s))) return false;
    15. //
    16. if (lMarkIsRunning == undefined || lMarkIsRunning == null || lMarkIsRunning == true)
    17. this.set("1");
    18. //
    19. return true;
    20. },
    21. //读取是否正在运行
    22. zhengzaiyunxing: function (lShowAlert, strShowAlert, lMarkIsRunning) {
    23. var obj = this.kongjian.objRunning, v = "", l = false, s = strShowAlert, lAlert = lShowAlert;
    24. if (obj == undefined || obj == null) obj = document.getElementById("hf_running");
    25. else if (typeof (obj) == "string") obj = document.getElementById(obj);
    26. if (obj == undefined || obj == null) obj = document.getElementById("hf_running");
    27. if (obj != null && this.kongjian.objRunning == null) this.kongjian.objRunning = obj;//记下来
    28. v = obj.value; //取值
    29. l = !(v == undefined || v == null || v == "" || v == "0" || v == "false");
    30. //提示信息
    31. if (l) { //正在运行
    32. if (lShowAlert == undefined || lShowAlert == null) lAlert = true;
    33. if (strShowAlert == undefined || strShowAlert == null) s = "正在运行,请稍候";
    34. if (lAlert && s != "") alert(s);
    35. } else { //没有运行,标记为正在运行
    36. if (lMarkIsRunning == undefined || lMarkIsRunning == null || lMarkIsRunning == true)
    37. this.set("1");
    38. }
    39. //完成返回
    40. return l;
    41. },
    42. //设置值
    43. set: function (val) {
    44. var obj = this.kongjian.objRunning, tp = typeof (obj);
    45. if (tp == "object") obj.value = val;
    46. else if (tp == "string") document.getElementById(obj).value = val;
    47. else document.getElementById("hf_running").value = val;
    48. }
    49. };

  • 相关阅读:
    数据准备之日志采集发展历程
    SQL批量处理+JDBC操作大数据及工具类的封装
    WebSocket的那些事(5-Spring STOMP支持之连接外部消息代理)
    一些css记录
    【JS Promise】手写实现 promise.all 和promise.race 方法
    Python小白之PyCharm仍然显示“No module named ‘xlwings‘”
    【MySQL、SQL Server、Redis、Rabbitmq、Kafka】——简介
    进程和任务管理计划
    VirtualBox安装Centos
    LeetCode 0827. 最大人工岛
  • 原文地址:https://blog.csdn.net/gssystems/article/details/125537427