如何防止Javascript禁用按钮在回发后重新启用
How to prevent a Javascript disabled button from re-enabling after postback?
下面的代码示例演示了这个问题。当单击Button1时,通过JavaScript禁用Button3。单击Button2将导致启动回发的服务器事件。回发后,Button3不再被禁用。
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestDisableButton.aspx.cs" Inherits="StudentForms_CaseManagement_TestDisableButton" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function Button1_onclick() {
document.getElementById("<%= Button3.ClientID %>").disabled = true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Disable Button 3" onclick="return Button1_onclick()" />
<asp:Button ID="Button2" runat="server" Text="Perform Post Back" onclick="Button2_Click" />
<asp:Button ID="Button3" runat="server" Text="Button3" />
<br />
<asp:Label ID="Label1" runat="server" ></asp:Label>
</div>
</form>
</body>
</html>
后台代码> using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class StudentForms_CaseManagement_TestDisableButton : System.Web.UI.Page
{
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = "Button 2 clicked";
}
}
按钮在服务器端重新创建,基于它的最新状态(存储在ViewState
中,从服务器到浏览器再返回到服务器)和发布的值。
问题是禁用状态在ViewState
中,您无法在客户端修改它。唯一发布的值是控件本身的值(例如文本框中的文本)。
所以,因为你不能修改ViewState
,唯一的选择是有一个额外的控件在您的表单,允许发布禁用状态回服务器。因此,您需要添加HiddenField
,在客户端设置其状态(在启用/禁用按钮的同一脚本中),然后在服务器端恢复发布回来的值并将其应用于控件。即读取隐藏字段值,并相应设置按钮的Enabled
属性
在回发时禁用Button3
protected void Button2_Click(object sender, EventArgs e)
{
Button3.Enabled = false;
}
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 如何在 API 调用后和 if 语句中启用提交按钮
- 语义ui如何使用javascript启用或禁用下拉列表
- IE6在启用/禁用文本字段上闪烁
- 传单中如何在更改基层时启用/禁用覆盖层
- 根据字段的值启用按钮
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- 如何禁用和启用css规则
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 在新类 jQuery 上启用可拖动
- JavaScript 启用新的 HTML5 按钮属性:formaction、formmethod
- jQuery 性能问题,通过为新元素启用拖放
- Javascript——如何在不使用新运算符的情况下启用静态方法,同时防止使用实例函数
- 如何在使用窗口后启用浏览器选项卡.打开以启动一个新窗口
- 创建一个表单提交按钮,启用“在新窗中打开”;当用户右键点击时
- 检查打开新选项卡时是否启用了弹出窗口阻止程序
- 如何在加载新页面时启用jquery标签/单选按钮
- 有没有一种好方法来启用“在新窗口中打开链接”?在dom节点上的浏览器菜单选项,而不使链接跟随单击
- 如何启用超链接打开模态对话框,同时也允许在同一链接上的新选项卡中打开
- Jquery:如果其他滑动开关被启用(可见),在启动新的滑动开关之前关闭