You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC应用中重复页面点击Start按钮时弹出定时器已运行提示的实现

解决方案:避免重复启动定时器并弹出提示

方法一:基于后端状态的即时判断

直接在Start按钮的点击事件中加入状态校验,利用后端传递的BIsSetupRunning字段判断定时器是否已在运行:

修改ISetupStatus=0时的Start按钮

<button class="btn production-btn" type="button" style="width:135px;background-color:green;" onclick="javascript: if (@Model.BIsSetupRunning) { alert('定时器已经在运行'); } else { UpdateProductionStatus(@Model.IJobID,1,true,false); }">Start</button>

修改ISetupStatus=2时的Start按钮

<button class="btn production-btn" type="button" style="width:135px;background-color:green;" onclick="javascript: if (@Model.BIsSetupRunning) { alert('定时器已经在运行'); } else { UpdateProductionStatus(@Model.IJobID,1,true,false); }">Start</button>

这种方式简单直接,依赖后端返回的实时状态,适用于页面状态与后端同步的场景。


方法二:前端维护运行状态(适配页面复制场景)

如果存在页面复制后前端状态与后端不同步的情况,通过前端全局变量跟踪定时器运行状态,判断更可靠:

1. 定义全局状态变量

在页面的<script>区块中添加:

// 从后端初始化状态,转为布尔值
let isSetupTimerRunning = @Model.BIsSetupRunning.ToString().ToLower();

2. 更新UpdateProductionStatus函数

修改该函数,在状态变更时更新全局变量:

function UpdateProductionStatus(jobId, status, param1, param2) {
    // 标记定时器状态
    if (status === 1) {
        isSetupTimerRunning = true; // 启动定时器
    } else if (status === 2 || status === 3) {
        isSetupTimerRunning = false; // 停止或完成定时器
    }

    // 保留原函数的业务逻辑(AJAX请求、定时器启动等)
}

3. 修改Start按钮点击事件

将两个Start按钮的onclick替换为:

onclick="javascript: if (isSetupTimerRunning) { alert('定时器已经在运行'); } else { UpdateProductionStatus(@Model.IJobID,1,true,false); }"

这样即使页面被复制,前端也能根据自身维护的状态判断,避免重复启动定时器并弹出提示。

内容的提问来源于stack exchange,提问作者Hercule

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:17:03