news 2026/4/23 15:19:50

在WebForm中实现发送验证码,点击按钮后按钮禁用60秒的效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在WebForm中实现发送验证码,点击按钮后按钮禁用60秒的效果

在实现代码之前,先思考一个问题:

同样点击一个按钮调用后台,WebForm与小程序有什么区别?

WebForm 是重量级的,服务器控件的Button,执行时会将整个页面提交到后台,执行完成之后,服务器会将整个页面再重新加载一次。

为什么我们看到重新加载的页面,控件的值没有变化?那只是因为在整个页面提交时,保存了控件的值,重新加载时,重新渲染出来了而已。

相当于:我们做菜,想买瓶酱油,出门时把锅碗瓢盆都带在身上,买完酱油,锅碗瓢盆重新放回原位。

所以:

第一,这个消耗是比较大的;

第二,点击按钮之后的页面,其实已经不是我们前面的页面,是重新加载出来的页面。

说完WebForm, 那小程序呢?

小程序其实相当于WebForm用 Ajax 方式来实现功能,没有“服务器控件”的概念,所以非常轻量,原理完全不同。

回到原来的需求上来:

在WebForm中实现发送验证码,点击按钮后按钮禁用60秒的效果

应该怎么做呢?

两种方式:

1、采用Ajax 方式实现,这个思路比较简单,但写代码要麻烦一点,需要写ajax 相关的代码。

2、采用WebForm原生的服务器控件来实现。

我们想实现的,是第2种方式。

第2种方式,禁用按钮60秒的效果应该在哪个阶段来实现呢?

如果采用类似 OnClientClick 的方式,来实现,则必须前端执行完,才可以执行后端。而且即使能实现,效果也不好。

如果60秒走完才执行后端,白白浪费了时间。

如果60秒没走完就执行了后端,60秒效果没有达到。

所以,必须换思路,在后端执行完之后再来执行60秒效果就可以了。

因为按钮点击完,页面会重新加载一次,我们在前端利用这个机会把60秒的效果展现出来就可以了。

思路清晰,要做就容易了:

.aspx 代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestSmsCode.aspx.cs" Inherits="SWSchool.Mobile.TestSmsCode" %> <!DOCTYPE html> <html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script src="../JS/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $(document).ready(function () { var seconds = parseInt($('#<%= hfSeconds.ClientID %>').val()); if (seconds > 0) { startCountdown(seconds); } function startCountdown(seconds) { var btnSendSms = $('#<%= btnSendSms.ClientID %>'); btnSendSms.prop('disabled', true); var interval = setInterval(function () { if (seconds > 0) { btnSendSms.val('重新发送(' + seconds + 's)'); seconds--; } else { clearInterval(interval); btnSendSms.prop('disabled', false); btnSendSms.val('发送验证码'); $('#<%= hfSeconds.ClientID %>').val('0'); } }, 1000); } }); </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="txtMobile" runat="server" Width="200px" MaxLength="11" placeholder="请输入手机号"></asp:TextBox> <asp:Button ID="btnSendSms" runat="server" Text="发送验证码" OnClick="btnSendSms_Click" /> <asp:HiddenField ID="hfSeconds" runat="server" Value="0" /> <br /><br /> <asp:TextBox ID="txtSmsCode" runat="server" Width="200px" MaxLength="6" placeholder="请输入验证码"></asp:TextBox> <asp:Button ID="btnVerifySms" runat="server" Text="验证验证码" OnClick="btnVerifySms_Click" /> <br /><br /> <asp:Label ID="lblMessage" runat="server" ForeColor="Red"></asp:Label> </div> </form> </body> </html>

.aspx.cs 代码:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace SWSchool.Mobile { public partial class TestSmsCode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnSendSms_Click(object sender, EventArgs e) { //todo : implement SMS sending logic here this.hfSeconds.Value = "60"; Response.Write("<script>alert('SMS sent successfully!');</script>"); } protected void btnVerifySms_Click(object sender, EventArgs e) { } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 20:25:15

AUTOSAR 学习效率翻倍:我如何把 CP/AP 规范重构成认知地图

AUTOSAR 学习效率翻倍&#xff1a;我如何把 CP/AP 规范重构成认知地图 先报个数吧。2025 年我在「嵌入式与硬件开发」写了 502 篇文章,访问量 594,368,点赞 12,388,收藏 10,903,代码片分享了 140 次,粉丝 6,491。 说实话,这些数字里我最在意的是"收藏"数。为啥?因为…

作者头像 李华
网站建设 2026/4/23 12:30:47

Miniconda-Python3.10镜像中如何清理缓存节省磁盘空间

Miniconda-Python3.10镜像中如何清理缓存节省磁盘空间 在构建AI模型训练环境时&#xff0c;你是否曾遇到过这样的窘境&#xff1a;刚部署完PyTorch和TensorFlow&#xff0c;系统就提示“磁盘空间不足”&#xff1f;尤其是在云服务器或Docker容器这类存储受限的场景下&#xff0…

作者头像 李华
网站建设 2026/4/23 14:48:11

Miniconda-Python3.10镜像结合Grafana可视化资源消耗

Miniconda-Python3.10镜像结合Grafana可视化资源消耗 在AI模型训练、数据科学实验和自动化脚本部署中&#xff0c;开发者常面临两个核心挑战&#xff1a;环境不一致导致“在我机器上能跑”问题&#xff0c;以及高负载任务下系统资源使用不可见带来的性能瓶颈。这两个问题一旦叠…

作者头像 李华
网站建设 2026/4/23 14:31:34

[特殊字符] 中国战斗机检测数据集介绍-3427张图片 军事装备识别 航空安全监控 军工制造质检 航空博物馆智能导览 军事训练仿真 国防科研分析

&#x1f4e6;点击查看-已发布目标检测数据集合集&#xff08;持续更新&#xff09; 数据集名称图像数量应用方向博客链接&#x1f50c; 电网巡检检测数据集1600 张电力设备目标检测点击查看&#x1f525; 火焰 / 烟雾 / 人检测数据集10000张安防监控&#xff0c;多目标检测点…

作者头像 李华
网站建设 2026/4/23 7:54:38

STM32双I2C接口资源管理策略通俗解释

STM32双I2C接口实战&#xff1a;如何让多个传感器各走各路&#xff0c;互不打架&#xff1f;你有没有遇到过这种情况&#xff1a;项目里接了温湿度传感器、触摸屏、OLED显示屏、EEPROM……全都用I2C通信&#xff0c;结果一通电&#xff0c;总线“卡死”&#xff0c;读不到数据&…

作者头像 李华
网站建设 2026/4/23 13:54:04

从寄存器配置看STM32 CANFD和CAN的区别:实践型解析

从寄存器配置看STM32 CANFD和CAN的区别&#xff1a;一位嵌入式工程师的实战手记最近在调试一个基于STM32H7的域控制器项目时&#xff0c;遇到了一件“离谱”的事&#xff1a;新设计的高速通信链路总是间歇性丢帧&#xff0c;而用CAN分析仪一抓包才发现——我们发出去的是CAN FD…

作者头像 李华