两种方法都试了,不行~
1.
CS中:
Button1.Attributes.Add ("onclick","return ispost()");
ASPX中:
<script>
function ispost()
{
if (...)
{
...
return false;
}
document.Form1.Button1.disabled = true;
return true;
}
<script>
以上程序在执行后,因为加了“document.Form1.Button1.disabled = true;”而不能向后台CS中提交,执行private void Button1_Click 事件,可去掉就没问题。2.
直接在CS中,利用.net所具有属性:
private void Button1_Click(object sender, System.EventArgs e)
{
Button1.Enabled = false;
执行代码...
Button1.Enabled = true;
}
也不可能,因为根据WEB的特性,提交后,中间的“执行代码...”完全执行完才能返回整个html的代码。而在提交瞬间,并不改变状态,除非完全提交后,才执行Button1.Enabled = false;但这个状态跟本看不到,只能看到最后的Button1.Enabled = true;状态。
1.
CS中:
Button1.Attributes.Add ("onclick","return ispost()");
ASPX中:
<script>
function ispost()
{
if (...)
{
...
return false;
}
document.Form1.Button1.disabled = true;
return true;
}
<script>
以上程序在执行后,因为加了“document.Form1.Button1.disabled = true;”而不能向后台CS中提交,执行private void Button1_Click 事件,可去掉就没问题。2.
直接在CS中,利用.net所具有属性:
private void Button1_Click(object sender, System.EventArgs e)
{
Button1.Enabled = false;
执行代码...
Button1.Enabled = true;
}
也不可能,因为根据WEB的特性,提交后,中间的“执行代码...”完全执行完才能返回整个html的代码。而在提交瞬间,并不改变状态,除非完全提交后,才执行Button1.Enabled = false;但这个状态跟本看不到,只能看到最后的Button1.Enabled = true;状态。
解决方案 »
- 未能加载文件或程序集“DevExpress.Xpo.v8.1.Compact”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRES
- 【迷惑】数据库设计三范式、多表级联查询、分页、性能
- MVC 页面跳转
- USB刷卡问题
- 20W条的数组如何导出到excel,谢谢。目前使用NPOI进行导出。百分求助
- 请高手帮忙登录个网站,做个技术尝试,分析包也无法进入,无验证码
- 关于SQL参数的问题
- 【为什么不认汉字和特殊符号?】
- 关于重组DateTable的排列顺序
- 关于OFFICE一个简单问题(在线等待,马上结贴!!!)
- 关于图片绑定的问题
- 如何弹出一个系统自带的默认发邮件软件(foxmail,outlook等)
因为这个必须要经过服务器处理后才能进行下一步的处理。一般是防止用户重复提交。
做这种的话,还是用JS代码吧。从道理上说,用户提交后,应该在客户端就把Disable Button的代码执行了才行。这样才能达到目的。
CS中:
Button1.Attributes.Add ("onclick","return ispost()");
ASPX中:
<script>
function ispost()
{
if (...)
{
...
return false;
}
document.Form1.Button1.disabled = true;
document.Form1.submit();
return false;
}
这样就可以脱离原.Net页面模型。自由度更高,处理速度更快。不信你试试。
<input type=button id="BtnSending" value="发送" onclick="ShowSending(true)">
<asp:button id="Btn_Send" runat="server" Text="发送" style="display:none"></asp:button></td>js里面这么写:
function ShowSending(val)
{
document.all.Btn_Send.click();
document.all.BtnSending.disabled = true;
}
---------------------------
苦海无边 回头无岸
---------------------------
加入document.Form1.submit();,在CS中,并不能执行private void Button1_Click 事件。
除非改为上面多数建议的HTML控件方式~~~TO:real0411(大头牛)
改为HTML方式,感觉就向原来的ASP或PHP似的,提交后接收form表单,唯一不同的是它在CS中接收。但如果能在WEB控件中实现就更好了,CS中就不需要改动了,哎~!!
在调用ajax方法之前设置不可用
然后执行ajax方法,判断这个方法执行的结果,再将其设置可用
我最欣赏的是他们开发理念。
<!--
function input(ok)
{
var M1=ok.ReplyContent.value;
if (M1=='') {
alert('回复内容不可以为空.');
return false;
}
ok.B1.disabled =true;
return true;
}
//-->
</script>
<FORM METHOD=POST onsubmit="return input(this)">
<textarea cols="85" rows="10" name="ReplyContent" class='content'></textarea>
<input type="submit" value="发出回复" border="0" name="B1" WIDTH="60" HEIGHT="20" class="formtext">
</FORM>
你的方式还是HTML的方式,这个方法是可以实现那个效果的~~~~~但我希望用的是WEB BUTTON,可能除了上面那个隐藏BUTTON的方法,就没有其他方法了~~
把你方法1中的button1换成html控件,然后设置成在服务器端运行,然后就可以实现了
另外不明白,楼主的第一种方法为什么不行呢?提交后,按钮会自动恢复的呀。难道js也会保存状态吗?是逻辑有问题吧?!!!
<HTML>
<HEAD>
<script language="javascript">
function Check()
{
if(window.postform.ch1.checked == false)
{
window.postform.ch1.checked = true;
window.postform.btn_submit.value = " 等待处理... "; //可以用别的方法代替,如按钮样式
//window.postform.btn_submit.disabled = true; //设置后无法提交到后台
window.postform.target="setWin";
window.postform.action = "webform1.aspx";
window.postform.submit();
return true;
}
else
{
return false;
}
}
</script>
</HEAD>
<body>
<iframe border="0" name="setWin" frameBorder="0" width="0" height="0"></iframe>
<form id="postform" method="post" runat="server">
<asp:button id="btn_submit" runat="server" Text=" 点击 "></asp:button>
<INPUT type="checkbox" name="ch1" style="display:none"></form>>
</body>
</HTML>webform1.aspx.cs
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btn_submit;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
btn_submit.Attributes.Add("onclick","return Check();");
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.GetPostBackEventReference(btn_submit);
this.btn_submit.Click += new System.EventHandler(this.btn_submit_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion private void btn_submit_Click(object sender, System.EventArgs e)
{
//执行代码
string outValue = "输出的内容";
Response.Write("<script language=javascript>alert('" + outValue + "');");
Response.Write("parent.window.postform.ch1.checked = false;");
Response.Write("parent.window.postform.btn_submit.value=\" 点击 \"; </script>");
Response.End();
}
}想不到别的方法,只能想到上面的
WEB控件怎么了?不要因为用不好,就说他不好用!对于浏览器起来说有WEB控件和html控件的区别吗?根本就没有!那么能应用在 html控件 上的js为什么不能应用到 WEB控件 上面?!!
另外不明白,楼主的第一种方法为什么不行呢?提交后,按钮会自动恢复的呀。难道js也会保存状态吗?是逻辑有问题吧?!!!================================================================不知道你进行过测试没有?第一种方法因为加了“document.Form1.Button1.disabled = true;”JS前台程序执行到这就停止了,而不能向后台CS中提交,从而执行private void Button1_Click 事件。如果去掉了document.Form1.Button1.disabled = true;就没问题,private void Button1_Click 事件可以正常执行,如果必须要加document.Form1.Button1.disabled = true;那么,再他后面必须加上“document.Form1.submit();”这样也能提交,但提交到后台页面,只能用Request.Form方式去进行处理。
<HEAD>
<title>WebForm</title>
<script language=javascript>
function Check()
{
alert("a");
//document.getElementById("Button1").disabled = true;
document.getElementById("Button1").style.display = "none";
}
</script>
</HEAD>
<body >
<form name="Form1" method="post" action="webform.aspx" id="Form1"> <TABLE id="Table1" cellSpacing="0" cellPadding="0" width="90%" align="center" border="0">
<TR>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD>
<input type="submit" name="Button1" value="Button" id="Button1" onclick="Check();"/></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>=====================我的html页面的测试代码。
另外我想是想防止重复点击提交按钮,如果是这样的话可以稍稍改一下。document.getElementById("Button1").style.display = "none";这样就可以隐藏 按钮了。也可以达到同样的效果。